我在克隆BitmapDrawable时遇到问题。我尝试了this post中的答案,但它会创建一个“浅”副本,并且我需要一个“深”副本,以便在不影响原始副本的情况下更改克隆中的像素。

我也试过这个:

    Bitmap bitmap = bdOriginal.getBitmap();
    BitmapDrawable bdClone = new BitmapDrawable(getResources(), bitmap.copy(bitmap.getConfig(), true));


但是,即使我将Bitmap.copy()中的可变参数设置为“ true”,它似乎也会创建不可变的克隆。也就是说,滤色器似乎没有改变克隆。我做错了吗? (编辑:我使用调试器确认bitmap.mIsMutable = true)

总而言之,我需要一个BitmapDrawable的克隆,可以使用彩色滤光片对其进行更改而不会影响原始图像。有什么建议么?

提前致谢...

最佳答案

创建相同大小的新Bitmap
为此新的Bitmap创建画布
将第一个Bitmap绘制到此画布中。


例:

Bitmap copy = Bitmap.createBitmap(original.getWidth(), original.getHeight(), original.getConfig());
Canvas copiedCanvas = new Canvas(copy);
copiedCanvas.drawBitmap(original, 0f, 0f, null);

10-07 19:53
查看更多