我在克隆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);