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.

  • Cursoradapter mit verschiedenen Zeilenlayouts
  • TLS-Verbindung mit SSLSocket ist in Android OS langsam
  • Unsatisfiedlinkerror mit Android 5.0.1 Update
  • Wie man Google Drive-Datei in Android herunterlädt
  • twitter connection fehlgeschlagen
  • Umgang mit der Anmeldung von facebook sdk in android
  • 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?

  • Lesen Sie die Assets-Datei als String
  • Platzhaltertext (nur Entwurfsprozess) im Android-Layout?
  • Spotify Login Fehler INVALID_CLIENT: Ungültige Redirect URI Android
  • ANDROID - dx Verarbeitung zu langsam
  • Kann ich das statische Layout (native UI) in der nativen Android-Implementierung verwenden?
  • Android Kamera Orientierung ISsue
  • 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.