2016-04-03 31 views
3

AM從機器人編碼圖像與此代碼爲Base64編碼的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的數據的基礎上,比用PHP解碼它使用代碼:

$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%,我怎麼能解決這個問題吧。

+1

它不應該影響圖像質量。我會研究這個'bmp.compress(Bitmap.CompressFormat.PNG,90,stream);''我猜''90'有一個質量設置。嘗試將其調整爲100,並根據您所接受的質量/文件大小將其調低。 – JimL

+2

不壓縮圖像 –

+0

堅持使用無損壓縮的原始'png'格式。當你使用'jpg'壓縮時,你會失去質量。 – arkascha

回答

1

我想,如果你做出壓縮格式JPEG,並且圖像質量降低50,是應該做的伎倆:

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

如果你壓縮成JPEG格式,你會失去圖像質量,不是嗎? – martijnn2008

+0

是的你是對的,但質量的損失是不明智的,圖像將顯示其原始質量和大小-martijnn2008 –

相關問題