我正在尝试将已创建的JPEG重新保存为渐进式jpg.
基本上,在前端我有一些JS裁剪图像,并输出base64图像JPEG.将它传递给PHP脚本后,我将其创建为常规JPEG文件,如下所示:
$largeTEMP = explode(',', $_POST['large']);
$large = base64_decode($largeTEMP[1]);
file_put_contents('../../images/shows/'.$dirName.'/large.jpg', $large);
我想要这个jpg图像是渐进的,所以我环顾四周,找到了PHP函数imageinterlace;但是,我似乎无法让它发挥作用.我尝试过各种各样的组合,但我觉得我出于某种原因会以错误的方式解决这个问题.
所以我的问题是,如何使用我已生成的JPEG并使用PHP将其转换为渐进式?或者,更好的是,在我将其保存到第一位之前,将其转换为渐进式JPEG.
解决方法:
使用imagecreatefromstring
创建图像资源:
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im === false) {
die("imagecreatefromstring failed");
}
imageinterlace($im, true);
imagejpeg($im, 'new.jpg');
imagedestroy($im);