php 调整图片大小而不损失质量

0ejtzxu1  于 2023-02-07  发布在  PHP
关注(0)|答案(3)|浏览(188)

我不得不用PHP调整图像的大小。但是...质量非常非常糟糕!!(看图片)
这里我的代码:

function _copyAndResizeImage($id, $wanted_width, $isAdvert=true) {
// The file
if ($isAdvert) {
    $filename = "../upload/images/advert/".$id."/1.jpg";
} else {
    $filename = "../upload/images/user/".$id.".jpg";
}

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

if ($width == 0) {
    $percent=1;
} else {
    $percent = $wanted_width / $width;
}

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
if ($isAdvert) {
    imagejpeg($image_p, '../upload/images/advert/'.$id.'/1-'.$wanted_width.'.jpg');
} else {
    imagejpeg($image_p, '../upload/images/user/'.$id.'-'.$wanted_width.'.jpg');
}

}

你有办法吗?谢谢

rggaifut

rggaifut1#

因为你正在调整较小的基于栅格(像素)的图像,你将失去质量在调整到一个较大的尺寸。这是预料之中的。如果你不希望发生这种情况,使用SVG的。

hm2xizp9

hm2xizp92#

Image_PEG作为用于质量的范围从0到100的第三可选参数:
bool图像jpeg(资源$图像[,字符串$文件名[,整数$质量]])
默认值为75通常应该是相当不错的。

lnlaulya

lnlaulya3#

我自己也一直在处理这个问题。我决定将调整大小的JPEG输出为PNG,效果很好!

imagepng(...);

相关问题