如何制作BitmapDrawable的深层副本?

时间:2012-05-25 22:50:18

标签: android

我无法克隆BitmapDrawable。我在this post中尝试了答案,但它创建了一个“浅”副本,我需要一个“深度”副本,这样我就可以改变克隆中的像素而不会影响原始像素。

我也试过这个:

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

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

总而言之,我需要一个BitmapDrawable的克隆,可以使用颜色过滤器进行更改,而不会影响原始颜色。有什么建议吗?

提前致谢...

1 个答案:

答案 0 :(得分:1)

  1. 创建相同大小的新Bitmap
  2. 为此新Bitmap
  3. 创建画布
  4. 将第一个Bitmap绘制到此画布中。
  5. 示例:

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