Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

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


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

Картинка:
Новый размер: X: Y:
cохранять пропорции

<?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$srcImage0000$destWidth$destHeight$srcWidth$srcHeight);
    
unlink($img);// удаляю исходный файл
    
switch ( strtolower(strrchr($img'.')) ){
    case 
"jpg":
        
ImageJPEG($resImage$img100); // 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