Java 位图到字节数组:解决缓冲区问题
在尝试将 Java 位图转换为字节数组时,一些用户遇到了使用 copyPixelsToBuffer 方法复制像素后,缓冲区仅包含零的特殊问题。尽管相机返回的位图是不变的,但这种意外结果引起了人们对代码准确性的担忧。
要解决此问题,请考虑采用替代方法:
<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>
在此修订后的代码中,我们没有将像素直接复制到缓冲区,而是使用 ByteArrayOutputStream 将位图压缩为 PNG 格式(质量级别为 100)。此过程生成一个包含位图数据的字节数组。另外,代码通过调用recycle方法释放位图资源,防止内存泄漏。
以上是为什么使用 copyPixelsToBuffer 后我的 Java 位图缓冲区填充为零?的详细内容。更多信息请关注PHP中文网其他相关文章!