android - CopyPixelsFromBuffer 有效。但解码其 ByteArray 返回 null

标签 android bitmap arrays bytebuffer

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(byteBuffer);
// bitmap is valid and can be displayed

我从有效的 byteBuffer 中提取了 ByteArray。但当我尝试解码ByteArray 时它返回 null。有人可以解释为什么会这样吗?

byteBuffer.rewind();
byteBuffer.get(byteArray, 0, byteBuffer.capacity());
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0 , byteArray.length);
// returns null

最佳答案

我相信这两个函数会做不同的事情并期望不同的数据。

copyPixelsFromBuffer()

用于将原始像素信息导入到已配置大小和像素深度的现有位图图像中。

BitmapFactory.decodeByteArray()

用于从包含完整位图文件数据(而不仅仅是原始像素)的字节数组创建位图。这就是为什么该函数不获取(或不需要)大小和像素深度信息,因为它从传递给它的字节中获取所有信息。

关于android - CopyPixelsFromBuffer 有效。但解码其 ByteArray 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874223/

相关文章:

android - 如何将 android.graphics.Color 转换为 androidx.compose.ui.graphics.Color

Android - MediaStore.Video.query() 返回 null

java - 如何将 List<String> 转换为 ArrayList<String>

c - 为结构体动态分配内存

java - React native - 如何修复 Java.lang Double 无法转换为 java.lang.Boolean

java - 从第二个微调器位置获取字符串值

android - 另存为 BLOB 时位图透明度的奇怪问题

android - 从图库中获取图像并转换为 base64 问题

屏幕旋转后Android Imageview显示旧位图

php - 如何检查数据是否已存在然后从数组中随机生成新数据