2016-04-03 29 views
3

Bin aus einem Bild kodiert Android mit diesem Code base64:wie zu dekodieren und kodieren base64 Bild, ohne die Qualität zu verlieren und die Größe

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bmp.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want. 
      byte [] byte_arr = stream.toByteArray(); 
      image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); 

und als es in MySQL-Datenbank einfügen, als es mit PHP dekodieren mit diesem Code:

$filename_path = md5(time().uniqid()).".jpeg"; 
$decoded=base64_decode($image_str); 
file_put_contents("uploads/".$filename_path,$decoded); 
//echo '<img src="uploads/".$filename_path"/>'; 
echo '<img src="uploads/'.$filename_path.'"/>'; 

es ist alles in Ordnung arbeiten kann ich das Bild sehen, und es gibt keine Fehler, aber das Problem ist, wie etwa 80% der Qualität und die Größe verlöre, wie ich das bitte beheben können.

+1

Es ist nicht die Bildqualität beeinträchtigen sollte. Ich würde in diese 'bmp.compress (Bitmap.CompressFormat.PNG, 90, stream) schauen;' - Ich denke '90' gibt es eine Qualitätseinstellung. Versuchen Sie es auf 100 einzustellen und drehen Sie es herunter, je nachdem, welche Qualität/Dateigröße für Sie akzeptabel ist. – JimL

+2

komprimieren Sie das Bild nicht –

+0

Stick mit dem ursprünglichen 'Png'-Format, das eine verlustfreie Komprimierung verwendet. In dem Moment, in dem Sie eine "jpg" -Komprimierung verwenden, verlieren Sie die Qualität. – arkascha

Antwort

1

Ich denke, wenn Sie die Kompresse Format JPEG, und reduzieren die Qualität des Bildes zu 50 machen, dass der Trick tun sollten:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos); 
byte [] b = baos.toByteArray(); 
return Base64.encodeToString(b, Base64.DEFAULT); 
+0

Wenn Sie auf JPEG-Format komprimieren Sie verlieren Bildqualität, nicht wahr? – martijnn2008

+0

ja du hast Recht, aber das Verlieren der Qualität hier ist nicht sinnvoll und das Bild wird mit seiner ursprünglichen Qualität und Größe gezeigt werden -martijnn2008 –

Verwandte Themen