Креативное Интернет-агентство «Webering»

Уменьшение изображения

Главная / Блог / PHP / Уменьшение изображения

Каждый php-программист когда-нибудь приходит к созданию фотогалереи или какого-то инструмента по работе с трансформацией графики, а для уменьшения загружаемого изображения, фотографии требуется знание основных функций библиотеки «php_gd2». И мы решили некоторые из этих функций продемонстрировать в данном посте. Ниже приведен пример с функцией уменьшения изображения, которая сжимает, уменьшает изображения четырех форматов: jpg, gif, png, bmp.

Функция уменьшения изображения:


    <?php
    
/**
    * $filename string = 'img.jpg' - путь к изображению
    * $percent string  = 300 - ширина уменьшенной копии картинки
    * $quality string  = 0-100 - качество изображения (только для JPG)
    **/
    
function resize ($filename, $size = 300, $quality = 85)
    {
    
    /**
        * Адрес директории для сохранения картинки
        */
    
    $dir  = '/images/';
    
    
        
/**
        * Извлекаем формат изображения, то есть получаем 
        * символы находящиеся после последней точки
        */
    
    $ext  = strtolower(strrchr(basename($filename), "."));
    
    
        
/**
        * Допустимые форматы
        */
    
    $extentions = array('.jpg', '.gif', '.png', '.bmp');
    
    
    if (in_array($ext, $extentions)) {   
             $percent 
= $size; // Ширина изображения миниатюры
    
    
             
list($width, $height) = getimagesize($filename); // Возвращает ширину и высоту
    
         $newheight    = $height * $percent;
    
         $newwidth    = $newheight / $width;
    
    
             $thumb 
= imagecreatetruecolor($percent, $newwidth);
    
    
             switch 
($ext) {
    
             case '.jpg':
    
                 $source = @imagecreatefromjpeg($filename);
    
                 break;
    
            
                  case 
'.gif':
    
                 $source = @imagecreatefromgif($filename);
    
                 break;
    
            
                  case 
'.png':
    
                 $source = @imagecreatefrompng($filename);
    
                 break;
    
            
                  case 
'.bmp':
    
                  $source = @imagecreatefromwbmp($filename);
    
          }
    
    
         /**
            * Функция наложения, копирования изображения
            */
    
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $percent, $newwidth, $width, $height);
    
    
            
/**
            * Создаем изображение
            */
    
        switch ($ext) {
    
            case '.jpg':
    
                imagejpeg($thumb, $dir . $filename, $quality);
    
                break;
    
                
                case 
'.gif':
    
                imagegif($thumb, $dir . $filename);
    
                break;
    
                
                case 
'.png':
    
                imagepng($thumb, $dir . $filename, $quality);
    
                break;
    
                
                case 
'.bmp':
    
                imagewbmp($thumb, $dir . $filename);
    
                break;
    
        }    
    
} else {
    
    return false;
    }
    
    
/* 
    *  Очищаем оперативную память сервера от временных файлов, 
    *  которые потребовались для создания миниатюры
    **/
    
    @imagedestroy($thumb);         
        
@imagedestroy($source);  
            
        return $filename
;
    }
 
    ?>
    

01 декабря 2008 Даниель Устинов, Директор


Поделиться



     


* — поля обязательны для заполнения