首頁 >Java >java教程 >為什麼我的 Java 位圖轉換為位元組數組會導致全 0?

為什麼我的 Java 位圖轉換為位元組數組會導致全 0?

Susan Sarandon
Susan Sarandon原創
2024-11-05 07:58:02317瀏覽

Why Does My Java Bitmap Conversion to a Byte Array Result in All 0s?

重新評估Java 位圖的位元組數組轉換

在嘗試將Java 位圖轉換為位元組數組時,開發人員遇到了一個特殊問題儘管點陣圖是從相機取得的,但產生的位元組數組包含全0。

用於此轉換的程式碼片段涉及提取位圖的行位元組、高度,並分配計算大小的 ByteBuffer。然後利用 CopyPixelsToBuffer 將圖像資料傳輸到緩衝區中,然後將位元組提取到新建立的位元組數組中。

經檢查,程式碼似乎正確。然而,根本問題在於位圖的不變性。儘管 copyPixelsToBuffer 打算複製點陣圖數據,但底層影像由於其不可變性而保持不變,導致緩衝區充滿 0。

另一種方法提供了明確的解決方案:

ByteArrayOutputStream

要有效地將位圖轉換為位元組數組,請考慮使用ByteArrayOutputStream 以及Bitmap 的compress 方法。此技術將點陣圖壓縮為特定格式(本例中為 PNG),並將壓縮資料寫入位元組數組。隨後,位圖可以被回收以釋放記憶體。

透過實作此策略,您可以可靠地將 Java 位圖轉換為位元組數組,解決 copyPixelsToBuffer 遇到的問題並產生表示影像的有效位元組數組.

以上是為什麼我的 Java 位圖轉換為位元組數組會導致全 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn