php调整图像没有损失质量

gio*_*ozh 7 php image php-gd

我已经实现了这个方法(通过以下php教程)来创建图像的预览:

function createPreview($image_path, $filename) {

    header('Content-Type: image/jpeg');
    $thumb = imagecreatetruecolor(350, 350);
    $source = imagecreatefromjpeg($image_path);

    list($width, $height) = getimagesize($image_path);

    imagecopyresized($thumb, $source, 0, 0, 0, 0, 350, 350, $width, $height);

    imagejpeg($thumb, $filename."_prev.jpg");
}
Run Code Online (Sandbox Code Playgroud)

但我注意到缩放图像损失了很多质量.我怎样才能保持缩放图像的质量(我不能使用想象力,我的服务器不支持它)

sec*_*tus 6

imagejpeg默认使用75质量.所以你需要明确定义它.

imagejpeg($thumb, $filename."_prev.jpg", 100);
Run Code Online (Sandbox Code Playgroud)

另外,使用imagecopyresampled

imagecopyresampled()将一个图像的矩形部分复制到另一个图像,平滑地插入像素值,这样,特别是减小图像的大小仍然保持很大的清晰度.


Lio*_*lus 6

使用imagecopyresampled而不是imagecopyresized(它是相同的参数,所以只需更改函数):)