Довольно часто при работе требуется изменить размеры картинки,
и большинство примеров, которые есть в интернете содержат ошибку,
из-за которой изменённые картинки теряют свои цвета, а всё дело то в одной строке:
$resImage = ImageCreateTrueColor($destWidth, $destHeight);
Здесь описана функция изменения размера изображения.
На вход подаются путь к изменяемой картинке, новая ширина, высота и признак сохранения пропорций исходного изображения.
Если размеры меньше новых размеров то изменение не осуществляется.
Максимальный размер изображения - 50кб [Снять ограничение*]
*За 11 рублей снимается ограничение на максимальный размер.
Вы сможете изменять размеры любого количества изображений без ограничения на размер до закрытия окна браузера.
Также снимаются ограничения на Создание анимированной gif-картинки
<?php
function SetImgSize($img, $width, $height, $AspectRatio)
{
//Создаем изображение в зависимости от типа исходного файла
// для упрощения, считаю, что расширение соответствует типу файла
switch ( strtolower(strrchr($img, '.')) ){
case "jpg":
$srcImage = @ImageCreateFromJPEG($img);
break;
case "gif":
$srcImage = @ImageCreateFromGIF($img);
break;
case "png":
$srcImage = @ImageCreateFromPNG($img);
break;
default:
return -1;
}
$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);
echo 'Исходная картинка('.$srcWidth.'x'.$srcHeight.'): <b>'.$pURL_name.'</b><br><img src="'.$img.'" />';
if(($width < $srcWidth) || ($height > $srcHeight))
{ if($AspectRatio){
$ratioWidth = $srcWidth/$width;
$ratioHeight = $srcHeight/$height;
if($ratioWidth < $ratioHeight)
{
$destWidth = intval($srcWidth/$ratioHeight);
$destHeight = $height;
}
else
{
$destWidth = $width;
$destHeight = intval($srcHeight/$ratioWidth);
}
}else {
$destHeight = $height;
$destWidth = $width;}
$resImage = ImageCreateTrueColor($destWidth, $destHeight);
ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
unlink($img);// удаляю исходный файл
switch ( strtolower(strrchr($img, '.')) ){
case "jpg":
ImageJPEG($resImage, $img, 100); // 100 - максимальное качество
break;
case "gif":
ImageGIF($resImage, $img);
break;
case "png":
ImagePNG($resImage, $img);
break;
}
ImageDestroy($srcImage);
ImageDestroy($resImage);
echo "<br>\nИзмененная картинка(".$destWidth.'x'.$destHeight.'):<br><img src="'.$img.'" />';
}
}
?>Скопировать в буфер
В примере для упрощения умышленно допущена ошибка. На экране вы увидите только измененную картинку, т.к. к моменту вывода исходная картинка будет затерта новой.
Возможно Вам будет интересно: Создание анимированной gif-картинки.© Copyright 2008-2012 by KDG