Conversion de tableau d'octets à partir d'un bitmap Java réévalué
En tentant de convertir un bitmap Java en un tableau d'octets, un développeur rencontre un problème particulier où le tableau d'octets résultant contient tous les 0 malgré l'acquisition du bitmap par la caméra.
L'extrait de code utilisé pour cette conversion impliquait l'extraction des octets de ligne, de la hauteur et de l'allocation d'un ByteBuffer de la taille calculée du bitmap. CopyPixelsToBuffer a ensuite été utilisé pour transférer les données d'image dans le tampon, suivi d'une extraction d'octets dans un tableau d'octets nouvellement créé.
Après examen, le code semble correct. Cependant, le problème sous-jacent réside dans l’immuabilité du bitmap. Bien que copyPixelsToBuffer ait l'intention de faire une copie des données du bitmap, l'image sous-jacente reste inchangée en raison de son immuabilité, ce qui entraîne un tampon rempli de 0.
Une approche alternative offre une solution définitive :
ByteArrayOutputStream
Pour convertir efficacement le bitmap en un tableau d'octets, envisagez d'utiliser ByteArrayOutputStream avec la méthode de compression de Bitmap. Cette technique compresse le bitmap dans un format spécifique (PNG dans ce cas) et écrit les données compressées dans un tableau d'octets. Par la suite, le bitmap peut être recyclé pour libérer de la mémoire.
En mettant en œuvre cette stratégie, vous pouvez convertir de manière fiable un bitmap Java en un tableau d'octets, résolvant le problème rencontré avec copyPixelsToBuffer et produisant un tableau valide d'octets représentant l'image. .
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!