Maison > Java > javaDidacticiel > Pourquoi tous les octets de mon tampon sont-ils 0 après avoir appelé copyPixelsToBuffer() sur un Bitmap ?

Pourquoi tous les octets de mon tampon sont-ils 0 après avoir appelé copyPixelsToBuffer() sur un Bitmap ?

Linda Hamilton
Libérer: 2024-11-05 10:18:02
original
468 Les gens l'ont consulté

Why are all bytes in my buffer 0 after calling copyPixelsToBuffer() on a Bitmap?

Java : Conversion d'un bitmap en tableau d'octets

Lors de la tentative de conversion d'un objet Bitmap en tableau d'octets à l'aide du code fourni, les utilisateurs peuvent rencontrer un problème où tous les octets du tampon restent à 0 après avoir appelé copyPixelsToBuffer(). Malgré l'immuabilité du Bitmap renvoyé par la caméra, cela ne devrait pas affecter le processus de copie.

Cause profonde potentielle :

L'extrait de code utilise la classe ByteBuffer pour allouer de la mémoire et copier le Bitmap. pixels dans le tampon. Cependant, il accède directement à un tampon sous-jacent sans définir correctement son décalage. Cela peut avoir pour conséquence que la méthode get() ne renvoie que 0 valeurs.

Solution :

Pour résoudre ce problème, envisagez d'utiliser l'approche suivante :

<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>
Copier après la connexion

Dans ce cas code amélioré :

  • Un flux ByteArrayOutputStream est créé, qui peut être utilisé pour capturer des données à convertir en un tableau d'octets.
  • La méthode compress() est invoquée sur l'objet Bitmap pour convertir ses pixels au format PNG et les écrire dans le ByteArrayOutputStream.
  • Enfin, la méthode toByteArray() convertit le contenu du ByteArrayOutputStream en un tableau d'octets.

En utilisant cette approche, vous pouvez convertir efficacement un objet Bitmap en un tableau d'octets sans rencontrer le problème de débordement de tampon.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal