php - 如何在不损失质量和大小的情况下对base64图像进行解码和编码

标签 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 数据库,然后使用该代码用 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% 的质量和大小,请问我该如何解决。

最佳答案

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

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

关于php - 如何在不损失质量和大小的情况下对base64图像进行解码和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384063/

相关文章:

android aapt转储资源没有输出

ios - 如何减少 base64 字符串长度

php - 从日期时间字段(mysql)中仅提取日期并将其分配给 php 变量

android - Google Play 许可证 - 错误 6 是什么?

java - 访问其他 fragment 数据

javascript - 如何从base64数据字符串javascript保存PNG图像服务器端

html - Svg 图像不显示

php - 刷新、锁定 MySQL 表和复制数据文件夹

javascript - 找不到文件,图表不出现

php - 如果一个为空,如何将变量分配给两个字符串之一?