2017-07-20 6 views
1

Ich brauche ein Bild an einen Server zu senden, ich ein Bild von 3,30 MB Größe habe, wir wandeln es in Byte-Array mit:Android Base64 Zeichenfolge viel größer als das Bild, gibt

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 

dann base64 Verwendung:

Base64.encodeToString(byteArray , Base64.DEFAULT) 

EDIT: Wenn ich die Länge des Byte-Array überprüfen (bytearray) ist 20 MB! aber auf dem PC oder dem Telefon die Größe zeigen 3.30 MB

Die Länge der zurückgegebenen Zeichenfolge beträgt 28 MB, jede Erklärung und Lösung?

+0

„Ich habe ein Bild von 3,30 MB Größe“ - was ** ** genau meinen Sie, dass ? Messen Sie den Speicherverbrauch von 'bmp? Beziehen Sie sich auf die Größe einiger Dateien, die Sie zum Erstellen von 'bmp' verwenden? Meinst du etwas anderes? – CommonsWare

+0

Es ist die Größe, die angezeigt wird, wenn ich auf die Bildeigenschaften klicke. –

Antwort

1

Sie komprimieren die Bitmap mit der Qualität von 100 und PNG. Verwenden Sie stattdessen JPEG und 60 oder 75 Qualität.

+0

Danke, Problem gelöst –

+0

Gern geschehen, Freund. –

0
Bitmap bm = BitmapFactory.decodeFile("path to file"); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap 
object 
byte[] b = baos.toByteArray(); 
0

Sie komprimieren die Bitmap mit Qualität bedeutet 100 kein viel compresion und das resultierende Bild ist größer in diesem ersten Code:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 

byteArray haben hier

20MB

normal ist, dass Base64 kodieren sein größer als Byte-Array

Base64 wurde erstellt, um binäre Daten zu senden/zu speichern, in denen Sie nur Text senden können und 64 Zeichen o. verwendet f die 256 im Byte oder das gleiche für jeden Bytes verwendet nur 6 Bits des 8 https://en.wikipedia.org/wiki/Base64

Base64.encodeToString(byteArray , Base64.DEFAULT) 
Verwandte Themen