Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Изменение размера изображения с помощью PHP. (http://forum.oszone.net/showthread.php?t=194455)

котвася 19-12-2010 21:49 1569908

Изменение размера изображения с помощью PHP.
 
Вложений: 1
Подскажите как сделать так что бы фон слева и справа был одного цвета
вот функция:
PHP код:

function resizeimg($filename$w$h$directory)
    {
        
// определим коэффициент сжатия изображения, которое будем генерить
        
$ratio $w/$h;
            
// создадим пустое изображение по заданным размерам
           
$dest_img imagecreatetruecolor($w$h);
        
// зальём его  цветом 0x424242
        
imagefill($dest_img000x424242);
        
// получим размеры исходного изображения
        
$size_img getimagesize("$directory".$filename);
        
// получим коэффициент сжатия исходного изображения
        
$src_ratio=$size_img[0]/$size_img[1];
        
        
//Введем поправку для отцентровки нового изображения на холсте
        
        
if($size_img[1]>$size_img[0])
        {
            
$delta =($w-$size_img[0]*$h/$size_img[1])/2;
        }

        
// здесь вычисляем размеры, чтобы при масштабировании сохранились
        // 1. Пропорции исходного изображения
        // 2. Исходное изображение полностью помещалось на маленькой копии
        // (не обрезалось)
        
if ($src_ratio>$ratio)
        {
            
$size_img[1]=floor($size_img[0]/$ratio);
        }
        else
        {
            
$size_img[0]=floor($size_img[1]*$ratio);
        }

        
// исходя из того какой тип имеет изображение
        // выбираем функцию создания
            
switch ($size_img['mime'])
            {
              
// если тип файла JPEG
            
case 'image/jpeg':
                
// создаем jpeg из файла
                
$src_img imagecreatefromjpeg("$directory".$filename);
                
$ext="jpg";
                break;
            
// если тип файла GIF
            
case 'image/gif':
                
// создаем gif из файла
                
$src_img imagecreatefromgif("$directory".$filename);
                
$ext="gif";
                break;
            }
        
// масштабируем изображение    функцией imagecopyresampled()
        // $dest_img - уменьшенная копия
        // $src_img - исходной изображение
        // $w - ширина уменьшенной копии
        // $h - высота уменьшенной копии
        // $size_img[0] - ширина исходного изображения
        // $size_img[1] - высота исходного изображения
        
imagecopyresampled($dest_img$src_img$delta000$w$h$size_img[0], $size_img[1]);

        
// в зависимости от типа файла выбирвем функцию сохранения в файл
        
switch ($size_img['mime'])
        {
            case 
'image/jpeg':
            
// сохраняем в файл small.jpg
                
imagejpeg($dest_img,"$directory".$filename);
                break;
            case 
'image/gif':
            
// сохраняем в файл small.gif
                
imagejpeg($dest_img,"$directory".$filename);
                break;
        }

        
// чистим память от созданных изображений
        
imagedestroy($dest_img);
        
imagedestroy($src_img);
    } 

вот пример результата работы:

Sham 19-12-2010 23:06 1569971

Цитата:

Цитата котвася
// зальём его цветом 0x424242
imagefill($dest_img, 0, 0, 0x424242); »

цвет требуется создавать с imagecolorallocate (первый вызов заполняет фон, тогда imagefill не обязателен по идее)...


Время: 00:00.

Время: 00:00.
© OSzone.net 2001-