我在克隆 BitmapDrawable 时遇到问题。我尝试了this post中的答案但它创建了一个“浅”副本,而我需要一个“深”副本,以便我可以更改克隆中的像素而不影响原始副本。
我也尝试过这个:
Bitmap bitmap = bdOriginal.getBitmap();
BitmapDrawable bdClone = new BitmapDrawable(getResources(), bitmap.copy(bitmap.getConfig(), true));
但即使我将 Bitmap.copy() 中的可变参数设置为“true”,它似乎还是创建了一个不可变的克隆。也就是说,滤色器似乎不会改变克隆。我做错了吗? (编辑:我使用调试器来确认 bitmap.mIsMutable = true)
总而言之,我需要一个 BitmapDrawable 的克隆,可以使用颜色滤镜进行更改,而不影响原始图像。有什么建议吗?
提前致谢...
最佳答案
- 创建相同大小的新
位图
。 - 为此新的
位图
创建 Canvas - 将您的第一个
位图
绘制到此 Canvas 中。
示例:
Bitmap copy = Bitmap.createBitmap(original.getWidth(), original.getHeight(), original.getConfig());
Canvas copiedCanvas = new Canvas(copy);
copiedCanvas.drawBitmap(original, 0f, 0f, null);
关于android - 如何对 BitmapDrawable 进行深层复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10762185/