7 Stimmen

Wie man die Größe eines Bildes, das in einem Byte-Array gehalten wird, in KB erhält

Ich möchte die Größe eines Bildes herausfinden, das in einem Byte-Array in KB gehalten wird

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mPicture);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm ist das Bitmap-Objekt
byte[] b = baos.toByteArray();

Die folgenden Logs zeigen zwei verschiedene Ergebnisse für ein Bild, das 11,7KB beträgt:

Log.d(TAG, "bm Größe: " + bm.getByteCount()/1024); // 942
Log.d(TAG, "baos Größe: " + baos.size()/1024); // 81
Log.d(TAG, "Byte-Größe: " + b.length/1024); // 81

Welches ist das korrekte Ergebnis oder wie erhalte ich das korrekte Ergebnis?? Jede Hilfe wird geschätzt.

9voto

Chandra Sekhar Punkte 17730

bm.getByteCount()/1024 // 942 ist die Originalgröße des Bildes

baos.size()/1024 // 81 ist die Größe nachdem das Bild komprimiert wurde

Der erste Wert gibt die Größe des Bitmaps an, welches die originale Bildressource darstellt, aber die nächsten beiden geben die Größe des Streams oder des Byte-Arrays an, welches das komprimierte Bild darstellt. Daher gibt der erste Wert eine größere Zahl zurück als die nächsten beiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X