[英]how to decode and encode base64 image without losing the quality and the size
使用以下代碼將圖像從android編碼到base64:
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);
而不是將其插入到mysql數據庫中,而不是使用該代碼解碼它:
$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.'"/>';
它工作得很好,我可以看到圖片,沒有錯誤,但問題是失去了大約80%的質量和尺寸,我該如何解決這個問題。
我認為如果你將壓縮格式設為JPEG
,並將圖像質量降低到50
,那應該可以解決問題:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos);
byte [] b = baos.toByteArray();
return Base64.encodeToString(b, Base64.DEFAULT);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.