重新評估Java 位圖的位元組數組轉換
在嘗試將Java 位圖轉換為位元組數組時,開發人員遇到了一個特殊問題儘管點陣圖是從相機取得的,但產生的位元組數組包含全0。
用於此轉換的程式碼片段涉及提取位圖的行位元組、高度,並分配計算大小的 ByteBuffer。然後利用 CopyPixelsToBuffer 將圖像資料傳輸到緩衝區中,然後將位元組提取到新建立的位元組數組中。
經檢查,程式碼似乎正確。然而,根本問題在於位圖的不變性。儘管 copyPixelsToBuffer 打算複製點陣圖數據,但底層影像由於其不可變性而保持不變,導致緩衝區充滿 0。
另一種方法提供了明確的解決方案:
ByteArrayOutputStream
要有效地將位圖轉換為位元組數組,請考慮使用ByteArrayOutputStream 以及Bitmap 的compress 方法。此技術將點陣圖壓縮為特定格式(本例中為 PNG),並將壓縮資料寫入位元組數組。隨後,位圖可以被回收以釋放記憶體。
透過實作此策略,您可以可靠地將 Java 位圖轉換為位元組數組,解決 copyPixelsToBuffer 遇到的問題並產生表示影像的有效位元組數組.
以上是為什麼我的 Java 位圖轉換為位元組數組會導致全 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!