Android 如何在imageview中对位图图像应用撤消操作。我想撤消效果

Android 如何在imageview中对位图图像应用撤消操作。我想撤消效果,android,Android,我正在图像视图中对位图图像应用不同的效果。此图像来自mainactivity 代码如下: Bundle extras=getIntent().getExtras(); //b=(Bitmap)extras.get("img"); byte[] byteArray=extras.getByteArray("img"); bmp=BitmapFactory.decodeByteArray(byteArray, 0, byteArray.le

我正在图像视图中对位图图像应用不同的效果。此图像来自mainactivity

代码如下:

    Bundle extras=getIntent().getExtras();
        //b=(Bitmap)extras.get("img");

        byte[] byteArray=extras.getByteArray("img");

        bmp=BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        camphoto=(ImageView)findViewById(R.id.camimage);
        camphoto.setImageBitmap(bmp);
和这样的效果:

case R.id.btnsepia:
        BitmapDrawable  abmp = (BitmapDrawable)camphoto.getDrawable();
        bmp = abmp.getBitmap();
        Bitmap bmOut=Bitmap.createBitmap(createSepiaToningEffect(bmp, 3, .89, .66, .5));
           camphoto.setImageBitmap(bmOut);
        break;
现在我想撤销效果,以便在图像视图中恢复原始图像。

这是不可能的

位图对象不会自动记录应用于它的所有更改,因此您可以调用类似于
bitmap.undo()的东西。即使这是可能的,它也无法工作,因为您正在从源图像生成一个具有此效果的全新位图。原始图像不再包含在新图像中


您必须自己跟踪更改。也许只需将原始图像和修改后的图像传递给Intent即可满足您的需要。

我像这样解决了R.id.btnundo:camphoto.setImageBitmap(bmp);打破简略n简单:p:p(我猜是坏习惯:)