Konvertieren von Bitmap zu ByteArray Android

Ich habe eine Bitmap, die ich an den Server senden möchte, indem ich sie auf base64 kodiere, aber ich möchte das Bild nicht in png oder jpeg komprimieren.

Nun, was ich vorher tat, war.

ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream(); bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY, byteArrayBitmapStream); byte[] b = byteArrayBitmapStream.toByteArray(); //then simple encoding to base64 and off to server encodedImage = Base64.encodeToString(b, Base64.NO_WRAP); 

Jetzt will ich einfach keine Kompression oder kein Format einfaches einfaches Byte [] aus Bitmap verwenden, das ich kodieren und an den Server senden kann.

Irgendwelche Hinweise?

  • Flip Bild als Byte gespeichert Array
  • Wie kann man ein Video aus dem Byte-Array spielen?
  • Android / Java: Sichern eines Byte-Arrays in eine Datei (.jpeg)
  • Aufbau eines 9 Patches zur Laufzeit
  • Android: Bitmap zu Byte Array und zurück: SkImageDecoder :: Factory zurückgegeben null
  • Wie konvertiert man Byte-Array in Bitmap
  • Wie lese ich eine Datei in eine Java-Bitmap?
  • DecodeByteArray und copyPixelsToBuffer funktioniert nicht. SkImageDecoder :: Factory zurückgegeben null
  • 3 Solutions collect form web for “Konvertieren von Bitmap zu ByteArray Android”

    Sie können copyPixelsToBuffer() , um die Pixeldaten zu einem Buffer , oder Sie können getPixels() und dann die Integer in Bytes mit Bitverschiebung umwandeln.

    copyPixelsToBuffer() ist wohl das, was du verwenden möchtest, also hier ein Beispiel dafür, wie du es benutzen kannst:

     //b is the Bitmap //calculate how many bytes our image consists of. int bytes = b.getByteCount(); //or we can calculate bytes this way. Use a different value than 4 if you don't use 32bit images. //int bytes = b.getWidth()*b.getHeight()*4; ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer b.copyPixelsToBuffer(buffer); //Move the byte data to the buffer byte[] array = buffer.array(); //Get the underlying array containing the data. 

    Statt der folgenden Zeile in @jave Antwort:

     int bytes = b.getByteCount(); 

    Verwenden Sie die folgende Zeile und Funktion:

     int bytes = byteSizeOf(b); protected int byteSizeOf(Bitmap data) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) { return data.getRowBytes() * data.getHeight(); } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return data.getByteCount(); } else { return data.getAllocationByteCount(); } 
     BitmapCompat.getAllocationByteCount(bitmap); 

    Ist hilfreich, um die erforderliche Größe des ByteBuffers zu finden

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.