调整图片大小而不会降低质量

时间:2013-06-25 18:50:34

标签: php image-resizing

我必须使用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');
}

}

enter image description here

你有个主意吗? 感谢

2 个答案:

答案 0 :(得分:3)

由于您要调整较小的基于光栅的(像素)图像,因此在将其调整为较大尺寸时会降低质量。这是预料之中的。如果您不希望发生这种情况,请使用SVG。

答案 1 :(得分:0)

imagejpeg jas第三个可选参数,范围从0到100,质量:

bool imagejpeg(resource $ image [,string $ filename [,int $ quality]])

默认值为75应该非常正常。