качество изображения при создании эскиза - PullRequest
0 голосов
/ 28 марта 2012

У меня есть этот код для создания пропорциональных миниатюр:

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;

}

работает хорошо

, но качество изображения немного низкое

что я должен сделать для повышения качества создаваемой картинки

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Вы установили качество изображения при сохранении результата этой функции?

Эта функция, например, позволяет установить сжатие JPEG, и по умолчанию она довольно низкая.

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

Если это не так, я мог бы предложить вообще сбросить PHP GD.Это действительно не лучшая библиотека для работы с изображениями, она доступна по умолчанию.ImageMagick отлично, но вам нужно будет установить его.Работа с ним дала мне миниатюры, которые были меньше по размеру файла, но лучше по качеству, чем PHP GD.

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

0 голосов
/ 28 марта 2012

Вы не можете изменить качество изображения, но если вы используете другие форматы изображений, не забудьте установить качество на 100. Например: imagepng ($ imageResource, NULL, 100);

0 голосов
/ 28 марта 2012

Если вы хотите использовать бикубическую интерполяцию во время изменения размера, рассмотрите возможность использования ImageMagick вместо GD, потому что она очень интенсивно использует процессор. Например, сообщение на русском языке (но вы можете видеть, насколько сложен код)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...