Отправить изображение с внесенными изменениями в другой вид деятельности Android
У меня проблема с отправкой изображения из imageView в другой вид деятельности. Мой код работает хорошо, но только для отправки изображения, указанного в коде без изменений. Я добавляю фильтры на фото, и мне нужно отправить изображение с этими изменениями. Это мой код:
Первое занятие:
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);
}
Следующая деятельность:
@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);
}
Подскажите пожалуйста, что я должен изменить, чтобы он правильно отправлял изображение с изменениями?
1 ответ
Решение
Причина в том же, потому что вы передаете изображение только из ресурсов; не то, что редактируется.
Поскольку звучит так, будто вы хотите получить отредактированное изображение из представления, вы можете легко получить его кэш для рисования и использовать его.
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;
}