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中文網其他相關文章!