android - 如何对 BitmapDrawable 进行深层复制?

标签 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. 创建相同大小的新位图
  2. 为此新的位图创建 Canvas
  3. 将您的第一个位图绘制到此 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/

相关文章:

android - 通知未出现在应用程序的后台状态和终止状态

安卓 : I am trying to search for contacts on basis of their display name

android - Fabric 与 Android Studio 的集成

java - findviewbyid 无法解决 android studio 中的方法错误

java - 如何更新我的 firebase 数据库字段?

android - 无法使用 Google Services Analytics 编译 react 原生项目

java - 如何确保 ORMLite 数据库 Android 中的唯一行?

android - layout_above 无法与 layout_alignParentBottom 一起正常工作

android - 是否可以在 Tomcat 服务器中安装 XMPP 模块?

android - 进度对话框和后台线程处于 Activity 状态时处理屏幕方向更改?