點陣圖操作是Android 開發中的常見任務,通常涉及將位圖轉換為位元組數組以進行資料儲存或傳輸。然而,一些開發人員在嘗試執行此轉換時遇到困難,導致出現以下問題:
問:為什麼使用 copyPixelsToBuffer 轉換位圖後複製的位元組數組用零填充?
提供的程式碼片段示範了使用 copyPixelsToBuffer 將點陣圖轉換為位元組數組的嘗試,但產生的緩衝區僅包含零。為了理解這個問題的原因,我們來分析一下程式碼:
經過進一步檢查,很明顯問題出在 copyPixelsToBuffer 方法本身。當使用不可變位圖時,它不會執行實際的像素複製,而是傳回重複的參考。因此,對位圖的任何後續修改都不會反映在複製的緩衝區中。
要有效地將點陣圖轉換為位元組數組,有一個替代方法必須受僱。一種可靠的方法是使用 PNG 或 JPEG 等格式壓縮位圖,並將壓縮資料儲存在位元組數組中。以下是範例:
Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();
此程式碼片段遵循以下步驟:
請記住,也可以使用 BitmapFactory 類別從位元組陣列中擷取點陣圖資料:
BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
以上是為什麼使用 copyPixelsToBuffer 轉換位圖後我的位元組數組包含零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!