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