簡體   English   中英

如何解碼和編碼base64圖像,而不會失去質量和尺寸

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM