[JAVA] Conversion mutuelle de tableaux Bitmap / JPEG / octets sur Android

Traitement des données d'image

Lorsque je créais une application qui lisait un fichier image et le traitait, je voulais parfois convertir divers formats d'image (jpeg, png, bmp, etc.) en classe Bitmap et le gérer. Au contraire, il y avait aussi des cas où vous vouliez compresser jpeg / png à partir de Bitmap ou le convertir en un tableau d'octets. Dans cet article, je noterai leur conversion mutuelle.

Comment convertir des formats

Dans cet article, afin de faire la distinction entre «** Bitmap class » et « image format bitmap » du SDK Android, le premier est « Bitmap » et le second est « bmp **». Il s'écrit ".

tableau d'octets (bmp) → Bitmap

Bitmap.create Générez un Bitmap en spécifiant la taille verticale et horizontale de l'image et le format bmp dans Bitmap (). Copiez le tableau d'octets dans le contenu du Bitmap généré via ByteBuffer.

bmparr2bitmap.java


// bmparr(byte[])En supposant que les données d'image sont au format bmp
// width, height:Taille des données d'image
Bitmap bitmap = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(ByteBuffer.wrap(bmparr));

tableau d'octets (jpeg, png, etc.) → Bitmap

Utilisez BitmapFactory.decodeByteArray (). Cette méthode décode les données compressées avec jpeg ou png en Bitmap. Il semble que le format bmp ne puisse pas être décodé ici.

jpegarr2bitmap.java


// jpgarr(byte[])En supposant que les données d'image sont dans un format compressé tel que jpeg ou png
Bitmap bitmap = BitmapFactory.decodeByteArray(jpgarr, 0, jpgarr.length);

Bitmap → tableau d'octets (format bmp)

Copiez la valeur dans ByteBuffer avec Bitmap.copyPixelsToBuffer () et extrayez le tableau d'octets de ByteBuffer.

bitmap2bmparr.java


// bitmap(Bitmap)Prémisse que les données d'image sont incluses dans
ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
byte[] bmparr = byteBuffer.array();

Bitmap → tableau d'octets (jpeg, png, etc.)

Compressez depuis Bitmap vers un format tel que jpeg / png avec Bitmap.compress () et passez-le à ByteArrayOutputStream. Extrayez le tableau d'octets de ByteArrayOutputStream.

bitmap2jpgarr.java


// bitmap(Bitmap)Prémisse que les données d'image sont incluses dans
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] jpgarr = baos.toByteArray();

Recommended Posts

Conversion mutuelle de tableaux Bitmap / JPEG / octets sur Android
Liste de conversion mutuelle de tableau / liste / flux Java
12 du tableau
Parcourir une instance de Tab's View sur Android