如何解码和编码base64图像,而不会失去质量和尺寸

时间:2016-04-03 10:05:13

标签: php android base64 size decode

使用以下代码将图像从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%的质量和尺寸,我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

我认为如果您制作压缩格式JPEG,并将图像质量降低到50,那应该可以解决问题:

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