Rumah > Java > javaTutorial > teks badan

Mengapa Kod Java Saya Gagal Menukar Bitmap kepada Tatasusunan Byte?

Linda Hamilton
Lepaskan: 2024-11-05 14:53:02
asal
359 orang telah melayarinya

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

Tidak Dapat Menukar Peta Bit Java kepada Tatasusunan Byte

Coretan kod berusaha untuk menukar peta bit Java kepada tatasusunan bait untuk pemprosesan selanjutnya. Walau bagaimanapun, ralat yang tidak dijangka berlaku apabila cuba menyalin piksel peta bit ke penimbal. Data yang disalin secara konsisten mengembalikan semua sifar. Isu ini timbul walaupun peta bit dikembalikan daripada kamera sebagai tidak boleh diubah.

Untuk memahami masalah asas, pertimbangkan perkara berikut:

  bmp.copyPixelsToBuffer(b);

  byte[] bytes = new byte[size];

  try {
     b.get(bytes, 0, bytes.length);
  } catch (BufferUnderflowException e) {
     // always happens
  }
Salin selepas log masuk

Kaedah copyPixelsToBuffer menyalin data piksel daripada peta bit ke dalam penimbal yang disediakan. Walau bagaimanapun, saiz penimbal adalah tidak betul, yang membawa kepada pengecualian aliran bawah penimbal. Untuk menyelesaikan isu ini, gunakan saiz penimbal yang dikembalikan oleh b.limit() dan bukannya saiz:

byte[] bytes = new byte[b.limit()];
Salin selepas log masuk

Selain itu, logik bersyarat untuk mengendalikan pengecualian aliran bawah penimbal tidak diperlukan. Pengecualian akan berlaku tanpa mengira keadaan, kerana penimbal sentiasa bersaiz kecil.

Pendekatan Alternatif

Daripada kaedah copyPixelsToBuffer yang bermasalah, pertimbangkan untuk menggunakan pendekatan alternatif untuk menukar peta bit kepada tatasusunan bait:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
Salin selepas log masuk

Dalam pendekatan ini, peta bit dimampatkan ke dalam tatasusunan bait berformat PNG. Kaedah ini menjamin perwakilan tatasusunan bait yang sah bagi peta bit.

Atas ialah kandungan terperinci Mengapa Kod Java Saya Gagal Menukar Bitmap kepada Tatasusunan Byte?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!