Java:将位图转换为字节数组
尝试使用提供的代码将位图对象转换为字节数组时,用户可能会遇到调用 copyPixelsToBuffer() 后缓冲区中的所有字节仍为 0 的问题。尽管从相机返回的位图是不变的,但它不应该影响复制过程。
潜在的根本原因:
代码片段使用 ByteBuffer 类来分配内存并复制位图的像素进入缓冲区。但是,它直接访问底层缓冲区而没有正确设置其偏移量。这可能会导致 get() 方法仅返回 0 个值。
解决方案:
要纠正此问题,请考虑使用以下方法:
<code class="java">Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();</code>
在此改进的代码:
通过使用此方法,您可以有效地将 Bitmap 对象转换为字节数组,而不会遇到缓冲区下溢问题。
以上是为什么在位图上调用 copyPixelsToBuffer() 后缓冲区中的所有字节都为 0?的详细内容。更多信息请关注PHP中文网其他相关文章!