[JAVA] Gegenseitige Konvertierung von Bitmap / JPEG / Byte-Arrays unter Android

Umgang mit Bilddaten

Wenn ich eine App erstellte, die eine Bilddatei liest und verarbeitet, wollte ich manchmal verschiedene Bildformate (JPEG, PNG, BMP usw.) in die Bitmap-Klasse konvertieren und damit umgehen. Im Gegenteil, es gab auch Fälle, in denen Sie jpeg / png aus Bitmap komprimieren oder in ein Byte-Array konvertieren wollten. In diesem Artikel werde ich ihre gegenseitige Bekehrung notieren.

So konvertieren Sie Formate

In diesem Artikel wird zur Unterscheidung zwischen "** Bitmap-Klasse " und " Bildformat-Bitmap " des Android SDK " Bitmap " und letzteres " bmp **" verwendet. Es ist geschrieben als ".

Byte-Array (bmp) → Bitmap

Bitmap.create Generieren Sie Bitmap, indem Sie die vertikale und horizontale Größe des Bildes und das BMP-Format in Bitmap () angeben. Kopieren Sie das Byte-Array über ByteBuffer in den Inhalt der generierten Bitmap.

bmparr2bitmap.java


// bmparr(byte[])Angenommen, die Bilddaten liegen im BMP-Format vor
// width, height:Bilddatengröße
Bitmap bitmap = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(ByteBuffer.wrap(bmparr));

Byte-Array (JPEG, PNG usw.) → Bitmap

Verwenden Sie BitmapFactory.decodeByteArray (). Diese Methode decodiert mit JPEG oder PNG komprimierte Daten in Bitmap. Es scheint, dass das BMP-Format hier nicht dekodiert werden kann.

jpegarr2bitmap.java


// jpgarr(byte[])Angenommen, die Bilddaten haben ein komprimiertes Format wie JPEG oder PNG
Bitmap bitmap = BitmapFactory.decodeByteArray(jpgarr, 0, jpgarr.length);

Bitmap → Byte-Array (BMP-Format)

Kopieren Sie den Wert mit Bitmap.copyPixelsToBuffer () in ByteBuffer und extrahieren Sie das Byte-Array aus ByteBuffer.

bitmap2bmparr.java


// bitmap(Bitmap)Voraussetzung ist, dass Bilddaten enthalten sind
ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
byte[] bmparr = byteBuffer.array();

Bitmap → Byte-Array (JPEG, PNG usw.)

Komprimieren Sie mit Bitmap.compress () von Bitmap in ein Format wie jpeg / png und übergeben Sie es an ByteArrayOutputStream. Extrahieren Sie das Byte-Array aus dem ByteArrayOutputStream.

bitmap2jpgarr.java


// bitmap(Bitmap)Voraussetzung ist, dass Bilddaten enthalten sind
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] jpgarr = baos.toByteArray();

Recommended Posts

Gegenseitige Konvertierung von Bitmap / JPEG / Byte-Arrays unter Android
Java-Array / Liste / Stream gegenseitige Konvertierungsliste
12 von Array
Durchsuchen Sie eine Instanz von Tab's View unter Android