将更改后的图片发送给另一个 activity Android
Send image with made changes to another activity Android
我在将图像从 imageView 发送到另一个 activity 时遇到问题。
我的代码运行良好,但仅适用于发送代码中给出的图像而无需更改。
我在照片上添加了过滤器,我需要发送带有此更改的图像。这是我的代码:
第一个activity:
public void send(View view) {
//trzeba tu coś wymyslić żeby dodawało np tag żeby wiedziec jaka obraz ma nazwe
//i wstawić do tego niżej
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.i);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, TwoActivity.class);
intent.putExtra("picture", b);
startActivity(intent);
}
下一个activity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);
}
请告诉我应该更改哪些内容才能正确发送更改后的图像?
之所以相同是因为您只是从资源中传递图像;不是任何编辑。
既然听起来您想从视图中获取编辑后的图像,那么您可以轻松获取其绘图缓存并使用它。
public void send(View view) {
Bitmap bitmap = getFromCache(view);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, TwoActivity.class);
intent.putExtra("picture", b);
startActivity(intent);
}
private Bitmap getFromCache(View view){
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); // Make sure to call Bitmap.createBitmap before disabling the cache, as the Bitmap will be recycled once it is disabled again
view.setDrawingCacheEnabled(false);
return bitmap;
}
我在将图像从 imageView 发送到另一个 activity 时遇到问题。 我的代码运行良好,但仅适用于发送代码中给出的图像而无需更改。 我在照片上添加了过滤器,我需要发送带有此更改的图像。这是我的代码:
第一个activity:
public void send(View view) {
//trzeba tu coś wymyslić żeby dodawało np tag żeby wiedziec jaka obraz ma nazwe
//i wstawić do tego niżej
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.i);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, TwoActivity.class);
intent.putExtra("picture", b);
startActivity(intent);
}
下一个activity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);
}
请告诉我应该更改哪些内容才能正确发送更改后的图像?
之所以相同是因为您只是从资源中传递图像;不是任何编辑。
既然听起来您想从视图中获取编辑后的图像,那么您可以轻松获取其绘图缓存并使用它。
public void send(View view) {
Bitmap bitmap = getFromCache(view);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, TwoActivity.class);
intent.putExtra("picture", b);
startActivity(intent);
}
private Bitmap getFromCache(View view){
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); // Make sure to call Bitmap.createBitmap before disabling the cache, as the Bitmap will be recycled once it is disabled again
view.setDrawingCacheEnabled(false);
return bitmap;
}