AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Изменение размера изображения на PHP + GD


Довольно часто при работе требуется изменить размеры картинки, и большинство примеров, которые есть в интернете содержат ошибку, из-за которой изменённые картинки теряют свои цвета, а всё дело то в одной строке:
$resImage = ImageCreateTrueColor($destWidth, $destHeight);
Здесь описана функция изменения размера изображения. На вход подаются путь к изменяемой картинке, новая ширина, высота и признак сохранения пропорций исходного изображения. Если размеры меньше новых размеров то изменение не осуществляется.
Максимальный размер изображения - 50кб [Снять ограничение*]
*За 10 рублей снимается ограничение на максимальный размер. Вы сможете изменять размеры любого количества изображений без ограничения на размер до закрытия окна браузера.
Также снимаются ограничения на Создание анимированной gif-картинки и Наложение логитипа на изображение.

Картинка:
Новый размер: X: Y:
cохранять пропорции
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.'" />';
}
}

Источник: http://e-code.tnt43.com/

В примере для упрощения умышленно допущена ошибка. На экране вы увидите только измененную картинку, т.к. к моменту вывода исходная картинка будет затерта новой.

Возможно Вам будет интересно: Создание анимированной gif-картинки.

.

© Copyright 2008-2016 by KDG