【问题标题】:image quality while making thumbnail制作缩略图时的图像质量
【发布时间】:2013-04-12 23:52:05
【问题描述】:

我有这个制作比例缩略图的代码:

function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource.
//getting the image dimensions 
list($width_orig, $height_orig) = getimagesize($imgSrc);  

if (strtolower(substr($imgSrc, -3)) == "jpg") {
    $myImage = imagecreatefromjpeg($imgSrc);
} else if (strtolower(substr($imgSrc, -3)) == "jpeg") {
    $myImage = imagecreatefromjpeg($imgSrc);
} else if (strtolower(substr($imgSrc, -3)) == "png") {

    $myImage = imagecreatefrompng($imgSrc);
} else if (strtolower(substr($imgSrc, -3)) == "gif") {
    $myImage = imagecreatefromgif($imgSrc);
}


$ratio_orig = $width_orig/$height_orig;

if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
   $new_height = $thumbnail_width/$ratio_orig;
   $new_width = $thumbnail_width;
} else {
   $new_width = $thumbnail_height*$ratio_orig;
   $new_height = $thumbnail_height;
}

$x_mid = $new_width/2;  //horizontal middle
$y_mid = $new_height/2; //vertical middle

$process = imagecreatetruecolor(round($new_width), round($new_height));

imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
$thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height);

imagedestroy($process);
imagedestroy($myImage);
return $thumb;

}

效果不错

但是画质有点低

我应该怎么做才能提高创建的图片质量

【问题讨论】:

  • 我不确定“有点低”是什么意思,但另一方面,您可以在此处修复错误:else if (strtolower(substr($imgSrc, -3)) == "jpeg")

标签: php thumbnails


【解决方案1】:

保存此功能结果时是否设置了画质?

这个功能,例如,让你设置jpeg压缩,默认是相当低的。

http://www.php.net/manual/en/function.imagejpeg.php

如果不是这样,我可能会建议完全放弃 PHP GD。它确实不是最好的图像处理库,只是默认可用。 ImageMagick 很棒,但您需要安装它。使用它给我的缩略图比 PHP GD 的文件更小,但质量更好。

http://www.php.net/manual/en/book.imagick.php

【讨论】:

    【解决方案2】:

    如果您想要在调整大小期间进行双三次插值,请考虑使用 ImageMagick 而不是 GD,因为它非常占用 CPU。例如这里是a post in russian(但你可以看到代码有多复杂)

    【讨论】:

      【解决方案3】:

      您无法更改 gif 质量,但如果您使用其他图像格式,请记住将质量设置为 100。 例如:imagepng($imageResource,NULL,100);

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 2012-07-27
        • 2014-12-21
        • 2015-05-30
        • 2011-10-11
        • 2011-03-24
        • 2015-04-23
        • 2016-02-29
        相关资源
        最近更新 更多