-2

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');
}

}

ここに画像の説明を入力

アイデアはありますか?ありがとう

4

2 に答える 2

3

小さなラスターベース (ピクセル) 画像のサイズを変更しているため、大きなサイズにサイズ変更すると品質が低下します。これは予期されることです。これが発生したくない場合は、SVG を使用してください。

于 2013-06-25T18:54:34.110 に答える
0

imagejpeg には、品質のために 0 から 100 の範囲の 3 番目のオプション パラメータがあります。

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

デフォルトの 75 は、通常は問題ありません。

于 2013-06-25T18:54:26.423 に答える