Продвижение сайтов
Контекстная реклама
Таргетинговая реклама
Digital Agency
SERM
Уменьшение изображения

15 декабря 2007


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

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

[code]
<?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;

?>
[/code]

Наши клиенты

FitHealth
ActiveFitness
Airline
БалтАвтоТрейд BMW
Мостострой №6
FunJump
Emex
БалтАвтоТрейд Volkswagen
Fun City
iShop

Санкт-ПетербургМосква

  • Звоните!

    +7 (812) 318-40-34 +7 (499) 288-16-43
    +7 (499) 288-15-30
  • Пишите!

    info@webering.ru
  • Приезжайте!

  • г. Санкт-Петербург, ул. Седова, д. 11, лит. А, оф. 642 БЦ «Эврика» г. Москва, ул. Бутлерова, д. 17, оф. 5115 БЦ «NEO GEO»

  • Наш офис расположен в 5 минутах от станции метро «Елизаровская» в бизнес-центре «Эврика».

Ваша заявка успешно отправлена!

Отправить заявку

Бюджет: 20000 Р