Отправить изображение с внесенными изменениями в другой вид деятельности 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;
}
Другие вопросы по тегам