Java:将位图转换为字节数组
当尝试使用提供的代码将位图对象转换为字节数组时,用户可能会遇到调用 copyPixelsToBuffer() 后缓冲区中的所有字节仍为 0 的问题。尽管从相机返回的位图是不变的,但它不应该影响复制过程。
潜在的根本原因:
代码片段使用 ByteBuffer 类来分配内存并复制位图的像素进入缓冲区。但是,它直接访问底层缓冲区而没有正确设置其偏移量。这可能会导致 get() 方法仅返回 0 个值。
解决方案:
要纠正此问题,请考虑使用以下方法:
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
在这个改进的代码中:
通过使用这种方法,您可以有效地将Bitmap对象转换为字节数组,而无需遇到缓冲区下溢问题。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3