将更改后的图片发送给另一个 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;
}