Этот код давал мне вопросы в течение нескольких недель и не приблизились к ее решению ...PHP изменить размер изображения, своего рода работает
function create_thumbnail($source, $destination, $thumb_width){
$extension = get_image_extension($source);
$size = getimagesize($source);
$imageWidth = $newWidth = $size[0];
$imageHeight = $newheight = $size[1];
if ($imageWidth > $thumb_width || $imageHeight > $thumb_width)
{
// Calculate the ratio
$xscale = ($imageWidth/$thumb_width);
$yscale = ($imageHeight/$thumb_width);
$newWidth = ($yscale > $xscale) ? round($imageWidth * (1/$yscale)) : round($imageWidth * (1/$xscale));
$newHeight = ($yscale > $xscale) ? round($imageHeight * (1/$yscale)) : round($imageHeight * (1/$xscale));
}
$newImage = imagecreatetruecolor($newWidth, $newHeight);
switch ($extension)
{
case 'jpeg':
case 'jpg':
$imageCreateFrom = 'imagecreatefromjpeg';
$store = 'imagejpeg';
break;
case 'png':
$imageCreateFrom = 'imagecreatefrompng';
$store = 'imagepng';
break;
case 'gif':
$imageCreateFrom = 'imagecreatefromgif';
$store = 'imagegif';
break;
default:
return false;
}
$container = $imageCreateFrom($source);
imagecopyresampled($newImage, $container, 0, 0, 0, 0, $newWidth, $newHeight, $imageWidth, $imageHeight);
return $store($newImage, $destination);
}
Сейчас он работает нормально, но пространство, что эти (высота) - 225 (ширина), а иногда я получаю изображения, которые являются высокими и тощими, а некоторые короткие и широкие изображения, что затрудняет их размещение в пространстве, в идеале, если я может изменять размеры этих изображений, когда они сжимаются или обрезаются, но я не уверен, что это возможно ... Разве это?
Если это невозможно, я думаю, что я хочу настроить этот код, чтобы его изображение было высоким и тощим для изменения размера с высотой 200 и, если изображение было широким и коротким, чтобы изменить размер до ширины 225 .. .Я надеюсь в этом есть смысл.
В любом случае, любые советы, советы или что-то будет оценено по достоинству.
Я попытался запустить mschr код (который находится ниже в ответах) и получил эти ошибки
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/content/44/8713044/html/admin/Home.php on line 321
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 323
Warning: Cannot modify header information - headers already sent by (output started at /home/content/44/8713044/html/admin/include/header.php:7) in /home/content/44/8713044/html/admin/Home.php on line 325
Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 329
Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 334
ваша функция возвращает true/false и устанавливает $ destination, вставка, которую я дал, посылает изображения в выходной поток (записывает их). – mschr