Изменение размера изображения на лету возможно только с сильной потерей в качестве?

Royal Flash

-=MaestrO=-
Изменение размера изображения на лету возможно только с сильной потерей в качестве?

Взял готовый пример, код ниже:

$max_width = 200;
$max_height = 200;

$image = "image.jpg";

$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];

$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if ( ($width <= $max_width) && ($height <= $max_height) )
{
$tn_width = $width;
$tn_height = $height;
}
else if ( ($x_ratio * $height) < $max_height)
{
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}
else
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}

$src = ImageCreateFromJpeg($image);
$dst = ImageCreate($tn_width,$tn_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0, $tn_width,$tn_height,$width,$height);
header("Content-type: image/jpeg");
ImageJpeg($dst, null, -1);
ImageDestroy($src);
ImageDestroy($dst);

Все работает, вот только качество уменьшенной картинки оставляет желать лучшего... ImageJpeg($dst, null, -1) -
-1, я так понял, это и есть качество отображения, вот только не ясно, какое число соответствует лучшему качеству. И даже если вообще не сжимать картинку, а просто прогнать ее через этот скрипт качество заметно ухудшится.
Собственно вопрос: изменение размера изображения на лету возможно только с сильной потерей в качестве, или если это не так, подскажите как уменьшить размер картинки с минимальными потерями в качестве?

С уважением, Royal Flash
 

SiMM

Новичок
PHP FAQ: Как сделать уменьшенную копию картинки?, или в двух словах - [m]ImageCreateTrueColor[/m] + [m]ImageCopyResampled[/m]
PS: это вопрос появляется на форуме с завидной периодичностью, неужели кнопка поиск так хорошо спрятана, опять же ведь можно было и в мане ([m]image[/m]) посмотреть... И почему quality=-1?
 

Фанат

oncle terrible
Команда форума
так это ж неспортивно - поиском пользоваться.
 

Royal Flash

-=MaestrO=-
Пользовался поиском, только нашел кучу всего, кроме того что мне нужно. SiMM - пасиба! А на счет quality=-1, так это так в примере было написано :) Я сам еще не знаю :)
 
Сверху