Maison  >  Article  >  Java  >  Pourquoi mon tampon bitmap Java est-il rempli de zéros après avoir utilisé copyPixelsToBuffer ?

Pourquoi mon tampon bitmap Java est-il rempli de zéros après avoir utilisé copyPixelsToBuffer ?

DDD
DDDoriginal
2024-11-05 09:06:02349parcourir

Why is my Java bitmap buffer filled with zeros after using copyPixelsToBuffer?

Bitmap Java en tableau d'octets : résolution du problème de tampon

Lors d'une tentative de conversion d'un bitmap Java en tableau d'octets, certains utilisateurs rencontrent un problème particulier où le tampon ne contient que des zéros après avoir copié les pixels à l'aide de la méthode copyPixelsToBuffer. Malgré l'immuabilité du bitmap renvoyé par la caméra, ce résultat inattendu soulève des inquiétudes quant à l'exactitude du code.

Pour résoudre ce problème, envisagez d'utiliser une approche alternative :

<code class="java">Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();</code>

Dans ce code révisé , au lieu de copier les pixels directement dans un tampon, nous utilisons ByteArrayOutputStream pour compresser le bitmap au format PNG (avec un niveau de qualité de 100). Ce processus génère un tableau d'octets contenant les données du bitmap. De plus, le code libère les ressources du bitmap en appelant la méthode de recyclage pour éviter les fuites de mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn