首頁 > Java > java教程 > 主體

為什麼我的 Java 程式碼無法將點陣圖轉換為位元組數組?

Linda Hamilton
發布: 2024-11-05 14:53:02
原創
358 人瀏覽過

Why Does My Java Code Fail to Convert a Bitmap to a Byte Array?

無法將Java 位圖轉換為位元組數組

此程式碼片段致力於將Java 位圖轉換為位元組數組以進行進一步處理。但是,嘗試將位元圖像素複製到緩衝區時會發生意外錯誤。複製的資料始終傳回全零。儘管從相機返回的點陣圖是不可變的,但還是會出現此問題。

要了解根本問題,請考慮以下事項:

  bmp.copyPixelsToBuffer(b);

  byte[] bytes = new byte[size];

  try {
     b.get(bytes, 0, bytes.length);
  } catch (BufferUnderflowException e) {
     // always happens
  }
登入後複製

copyPixelsToBuffer 方法將像素資料從點陣圖複製到提供的緩衝區。但緩衝區大小不正確,導致緩衝區下溢異常。要解決此問題,請使用 b.limit() 傳回的緩衝區大小而不是 size:

byte[] bytes = new byte[b.limit()];
登入後複製

此外,處理緩衝區下溢異常的條件邏輯不是必需的。無論條件如何,都會發生異常,因為緩衝區始終尺寸不足。

替代方法

不要使用有問題的copyPixelsToBuffer 方法,請考慮使用替代方法進行轉換位圖轉換為位元組數組:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
登入後複製

在此方法中,位圖被壓縮為PNG 格式的位元組數組。此方法保證位圖的有效位元組數組表示。

以上是為什麼我的 Java 程式碼無法將點陣圖轉換為位元組數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!