gpt4 book ai didi

android - 在android中从byteArray创建位图

转载 作者:IT老高 更新时间:2023-10-28 21:37:17 26 4
gpt4 key购买 nike

我想从一个字节数组创建一个位图。

我尝试了以下代码

Bitmap bmp;

bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

ByteArrayInputStream bytes = new ByteArrayInputStream(data); 
BitmapDrawable bmd = new BitmapDrawable(bytes);
bmp = bmd.getBitmap();

但是,当我试图用位图初始化 Canvas 对象时

Canvas canvas = new Canvas(bmp);

导致错误

java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor

那么如何从 byteArray 中获取可变位图。

提前致谢。

最佳答案

您需要一个可变的 Bitmap 来创建 Canvas

Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap); // now it should work ok

编辑:正如 Noah Seidman 所说,您可以在不创建副本的情况下进行操作。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, options);
Canvas canvas = new Canvas(bmp); // now it should work ok

关于android - 在android中从byteArray创建位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7359173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com