Jas*_*onS 0 php image-optimization
我有调整图像大小的问题.
会发生的情况是,如果您上传的文件大于规定的参数,则会裁剪图像,然后以100%的质量保存.
所以,如果我上传一个272Kb的大型jpeg.图像被裁剪100个像素.然后文件大小上升到1.2Mb.
我们以100%的质量保存图像.我认为这是导致问题的原因.图像以30%的质量从Photoshop导出,从而减小了文件大小.以100%质量重新保存图像会创建相同的图像,但我假设有大量冗余文件数据.
有没有人遇到过这个?有没有人有办法解决吗?
这就是我们正在使用的.
$source_im = imagecreatefromjpeg ($file);
$dest_im = imagecreatetruecolor ($newsize_x, $newsize_y);
imagecopyresampled (
$dest_im, $source_im,
0, 0,
$offset_x, $offset_y,
$newsize_x, $newsize_y,
$sourceWidth, $sourceHeight
);
imagedestroy ($source_im);
if ($greyscale) {
$dest_im = $this->imageconvertgreyscale ($dest_im);
}
imagejpeg($dest_im, $save_to_file, $quality);
break;
Run Code Online (Sandbox Code Playgroud)
正如您所说,保存在30%然后重新保存为100%将创建冗余数据,无论您裁剪,调整大小等等.
不幸的是,JPEG压缩会累积数据丢失,因此压缩30%,处理图像,然后重新压缩总是看起来比原始压缩更糟糕.经验法则是尽可能避免压缩(特别是30%的重压缩).所以上传100%(如有必要,或80%),然后压缩.
编辑:显然,只要图像大小遵循某些约束(通常宽度和高度为16像素的倍数),jpegtran(google it)就可以执行诸如裁剪之类的操作而无需先解压缩图像.我自己没试过,但它可能适合你的目的.
| 归档时间: |
|
| 查看次数: |
3123 次 |
| 最近记录: |