- Автор темы
- #1
Подскажите, плиз, как правильно сделать ресайз изображений, чтобы в итоге получались картинки "квадратного" размера. Т.е. если у нас есть исходное изоражение 640*450, то как получить в итоге 100*100px?
У меня есть функция, но она ресайзит немного не так, например, с 640*450 мы получим, примерно 100*60px. Высмотрел я на одном сайте
У меня есть функция, но она ресайзит немного не так, например, с 640*450 мы получим, примерно 100*60px. Высмотрел я на одном сайте
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
здесь thumb изображения все формата 158px × 119px и не зависимо, какого формата было исходное изоражение... Как они подгоняли под 158px × 119px для меня загадка
PHP:
function generate_thumbnail($fname, $thumb_fname, $max_x, $max_y)
{
$ext = strtolower(preg_replace("/.+\.(.*)$/", "\\1", basename($fname)));
switch ($ext) {
case 'jpg':
case 'jpeg':
$im = imagecreatefromjpeg($fname);
break;
case 'gif':
$im = imagecreatefromgif($fname);
break;
case 'png':
$im = imagecreatefrompng($fname);
break;
default:
return false;
break;
} // switch type
if (@$im) {
list($width, $height, $type, $attr) = getimagesize($fname);
if (($width > $max_x) or ($height > $max_y)) {
if ($width > $height) {
$nw = $max_x;
$nh = ($max_x / $width) * $height;
}
else {
$nw = ($max_y / $height) * $width;
$nh = $max_y;
}
$thumb = imagecreatetruecolor($nw, $nh);
imagecopyresampled($thumb, $im, 0, 0, 0, 0, $nw, $nh, $width, $height);
imagejpeg($thumb, $thumb_fname, 90);
imagedestroy($thumb);
} // need to resize
else {
copy($fname, $thumb_fname);
} // just copy image
} // created image
else {
return false;
}
} // generate_thumbnail