Функции GD и функции для работы с изображениями (https://www.php.net/manual/ru/ref.image.php).

  • gd_info — Вывод информации о текущей установленной GD библиотеке
  • getimagesize — Получение размера изображения
  • getimagesizefromstring — Получение размера изображения из строки данных
  • image_type_to_extension — Получение расширения файла для типа изображения
  • image_type_to_mime_type — Получение Mime-типа для типа изображения, возвращаемого функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • image2wbmp — Выводит изображение в браузер или пишет в файл
  • imageaffine — Вернуть изображение, содержащее аффинно-преобразованное изображение src, используя дополнительную область ограничения
  • imageaffinematrixconcat — Конкатенирует две аффинные матрицы преобразования
  • imageaffinematrixget — Получает матрицу аффинного преобразования
  • imagealphablending — Задание режима сопряжения цветов для изображения
  • imageantialias — Требуется ли применять функции сглаживания или нет
  • imagearc — Рисование дуги
  • imagebmp — Вывести BMP-изображение в браузер или файл
  • imagechar — Рисование символа по горизонтали
  • imagecharup — Рисование символа вертикально
  • imagecolorallocate — Создание цвета для изображения
  • imagecolorallocatealpha — Создание цвета для изображения
  • imagecolorat — Получение индекса цвета пиксела
  • imagecolorclosest — Получение индекса цвета ближайшего к заданному
  • imagecolorclosestalpha — Получение индекса цвета ближайшего к заданному с учетом прозрачности
  • imagecolorclosesthwb — Получение индекса цвета, имеющего заданный тон, белизну и затемнение
  • imagecolordeallocate — Разрыв ассоциации переменной с цветом для заданного изображения
  • imagecolorexact — Получение индекса заданного цвета
  • imagecolorexactalpha — Получение индекса заданного цвета и альфа компонента
  • imagecolormatch — Делает цвета палитровой версии изображения более соответствующими truecolor версии
  • imagecolorresolve — Получает идентификатор конкретного цвета или его ближайший аналог
  • imagecolorresolvealpha — Получает идентификатор конкретного цвета и альфа компонента или его ближайший аналог
  • imagecolorset — Установка набора цветов для заданного индекса палитры
  • imagecolorsforindex — Получение цветов, соответствующих индексу
  • imagecolorstotal — Определение количества цветов в палитре изображения
  • imagecolortransparent — Определяет цвет как прозрачный
  • imageconvolution — Наложение искривляющей матрицы 3х3, используя коэффициент и смещение
  • imagecopy — Копирование части изображения
  • imagecopymerge — Копирует часть изображения с наложением
  • imagecopymergegray — Копирует часть изображения с наложением в градациях серого
  • imagecopyresampled — Копирование и изменение размера изображения с ресемплированием
  • imagecopyresized — Копирование и изменение размера части изображения
  • imagecreate — Создание нового палитрового изображения
  • imagecreatefrombmp — Создает новое изображение из файла или URL
  • imagecreatefromgd2 — Создание нового изображения на основе GD2 или URL
  • imagecreatefromgd2part — Создание нового изображения на основе части GD2 файла или URL
  • imagecreatefromgd — Создание нового изображения на основе GD файла или URL
  • imagecreatefromgif — Создает новое изображение из файла или URL
  • imagecreatefromjpeg — Создает новое изображение из файла или URL
  • imagecreatefrompng — Создает новое изображение из файла или URL
  • imagecreatefromstring — Создание нового изображения из потока представленного строкой
  • imagecreatefromwbmp — Создает новое изображение из файла или URL
  • imagecreatefromwebp — Создает новое изображение из файла или URL
  • imagecreatefromxbm — Создает новое изображение из файла или URL
  • imagecreatefromxpm — Создает новое изображение из файла или URL
  • imagecreatetruecolor — Создание нового полноцветного изображения
  • imagecrop — Обрезать изображение до заданного прямоугольника
  • imagecropauto — Обрезает изображение автоматически, используя один из доступных режимов
  • imagedashedline — Рисование пунктирной линии
  • imagedestroy — Уничтожение изображения
  • imageellipse — Рисование эллипса
  • imagefill — Заливка
  • imagefilledarc — Рисование и заливка дуги
  • imagefilledellipse — Рисование закрашенного эллипса
  • imagefilledpolygon — Рисование закрашенного многоугольника
  • imagefilledrectangle — Рисование закрашенного прямоугольника
  • imagefilltoborder — Заливка цветом
  • imagefilter — Применяет фильтр к изображению
  • imageflip — Переворачивает изображение, используя выбранный режим
  • imagefontheight — Получение высоты шрифта
  • imagefontwidth — Получение ширины шрифта
  • imageftbbox — Определение границ текста выводимого шрифтом freetype2
  • imagefttext — Нанесение текста на изображение, используя шрифты FreeType 2
  • imagegammacorrect — Применение гамма коррекции к GD изображению
  • imagegd2 — Вывод GD2 изображения в браузер или файл
  • imagegd — Вывод GD-изображения в браузер или в файл
  • imagegetclip — Получить отсекающий прямоугольник
  • imagegif — Выводит изображение в браузер или пишет в файл
  • imagegrabscreen — Захватывает изображение с экрана
  • imagegrabwindow — Захватывает изображение окна
  • imageinterlace — Включение или выключение интерлейсинга
  • imageistruecolor — Определяет, является ли изображение полноцветным
  • imagejpeg — Выводит изображение в браузер или пишет в файл
  • imagelayereffect — Установка флага альфа сопряжения для использования эффектов наложения изображений
  • imageline — Рисование линии
  • imageloadfont — Загрузка шрифта
  • imageopenpolygon — Рисует открытый полигон
  • imagepalettecopy — Копирование палитры из одного изображения в другое
  • imagepalettetotruecolor — Преобразует изображение на основе палитры в настоящий цвет
  • imagepng — Вывод PNG изображения в браузер или файл
  • imagepolygon — Рисование многоугольника
  • imagerectangle — Рисование прямоугольника
  • imageresolution — Получить или установить разрешение изображения
  • imagerotate — Поворот изображения с заданным углом
  • imagesavealpha — Сохранять ли полную информацию альфа-канала при сохранении изображений PNG
  • imagescale — Масштабировать изображение по заданной ширине и высоте
  • imagesetbrush — Установка изображения (кисти), посредством которого будут рисоваться линии
  • imagesetclip — Установите прямоугольник ограничения
  • imagesetinterpolation — Устанавливает метод интерполяции
  • imagesetpixel — Рисование точки
  • imagesetstyle — Установка стиля рисования линий
  • imagesetthickness — Установка толщины линий
  • imagesettile — Установка изображения, которое будет использовано в качестве элемента мозаичной заливки
  • imagestring — Рисование строки текста горизонтально
  • imagestringup — Рисование строки текста вертикально
  • imagesx — Получение ширины изображения
  • imagesy — Получение высоты изображения
  • imagetruecolortopalette — Преобразование полноцветного изображения в палитровое
  • imagettfbbox — Получение параметров рамки обрамляющей текст написанный TrueType шрифтом
  • imagettftext — Рисование текста на изображении шрифтом TrueType
  • imagetypes — Возвращает список типов изображений, поддерживаемых PHP сборкой
  • imagewbmp — Выводит изображение в браузер или пишет в файл
  • imagewebp — Вывод изображения WebP в браузер или файл
  • imagexbm — Вывод XBM изображения в браузер или файл
  • iptcembed — Встраивание двоичных IPTC данных в JPEG изображение
  • iptcparse — Разбор двоичных IPTC данных на отдельные теги
  • jpeg2wbmp — Конвертирует изображение из формата JPEG в WBMP
  • png2wbmp — Преобразование PNG файла в WBMP

Примеры работы с изображениями

1. Открытие изображения

 $filename = DIR . '/donut.png';
 $info   = getimagesize($filename);
 $width  = $info[0];
 $height = $info[1];
 $type   = $info[2];
 switch ($type) { 
     case 1: 
         $img = imageCreateFromGif($filename);
         imageSaveAlpha($img, true);
         break;                  
     case 2: 
         $img = imageCreateFromJpeg($filename);
         break;
     case 3: 
         $img = imageCreateFromPng($filename); 
         imageSaveAlpha($img, true);
         break;
 }

2. Изменение размера изображения (resize)

 // Размеры новой фотки.
 $w = 200;
 $h = 0;
 if (empty($w)) {
     $w = ceil($h / ($height / $width));
 }
 if (empty($h)) {
     $h = ceil($w / ($width / $height));
 }
 $tmp = imageCreateTrueColor($w, $h);
 if ($type == 1 || $type == 3) {
     imagealphablending($tmp, true); 
     imageSaveAlpha($tmp, true);
     $transparent = imagecolorallocatealpha($tmp, 0, 0, 0, 127); 
     imagefill($tmp, 0, 0, $transparent); 
     imagecolortransparent($tmp, $transparent);    
 }   
 $tw = ceil($h / ($height / $width));
 $th = ceil($w / ($width / $height));
 if ($tw < $w) {
     imageCopyResampled($tmp, $img, ceil(($w - $tw) / 2), 0, 0, 0, $tw, $h, $width, $height);        
 } else {
     imageCopyResampled($tmp, $img, 0, ceil(($h - $th) / 2), 0, 0, $w, $th, $width, $height);    
 }            
 $img = $tmp;

3. Обрезать изображение (crop)

 $w = 200;
 $h = 200;
 $x = '100%';
 $y = '100%';
 if (strpos($x, '%') !== false) {
     $x = intval($x);
     $x = ceil(($width * $x / 100) - ($w / 100 * $x));
 }
 if (strpos($y, '%') !== false) {
     $y = intval($y);
     $y = ceil(($height * $y / 100) - ($h / 100 * $y));
 }
 $tmp = imageCreateTrueColor($w, $h);
 if ($type == 1 || $type == 3) {
     imagealphablending($tmp, true); 
     imageSaveAlpha($tmp, true);
     $transparent = imagecolorallocatealpha($tmp, 0, 0, 0, 127); 
     imagefill($tmp, 0, 0, $transparent); 
     imagecolortransparent($tmp, $transparent);    
 }
 imageCopyResampled($tmp, $img, 0, 0, $x, $y, $width, $height, $width, $height);
 $img = $tmp;

4. Поворот изображения

 // Поворот против часовой стрелки на 45°.
 $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127); 
 $img = imagerotate($img, 45, $transparent);
 // Поворот по часовой стрелки на 90°
 $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127); 
 $img = imagerotate($img, -90, $transparent);

5. Зеркальное отражение

imageflip($img, IMG_FLIP_HORIZONTAL);
IMG_FLIP_HORIZONTALПо горизонтали
IMG_FLIP_VERTICALПо вертикали
IMG_FLIP_BOTHПо горизонтали и вертикали

6. Наложение водяного знака (watermark)

 $watermark = DIR . '/watermark.png';
 $x = '50%';
 $y = '50%';
 $info = getimagesize($watermark);
 switch ($info[2]) { 
     case 1: 
         $tmp = imageCreateFromGif($watermark);
         break;                  
     case 2: 
         $tmp = imageCreateFromJpeg($watermark);
         break;
     case 3: 
         $tmp = imageCreateFromPng($watermark); 
         break;
 }
 if (strpos($x, '%') !== false) {
     $x = intval($x);
     $x = ceil(($width * $x / 100) - ($info[0] / 100 * $x));
 }
 if (strpos($y, '%') !== false) {
     $y = intval($y);
     $y = ceil(($height * $y / 100) - ($info[1] / 100 * $y));
 }
 imagecopy($img, $tmp, $x, $y, 0, 0, $info[0], $info[1]); 
 imagedestroy($tmp);

7. Добавление фона

 $file = DIR . '/donut_bg.jpg';

 // Положение фона.
 $x = '50%';
 $y = '50%';

 $info = getimagesize($file);
 switch ($info[2]) { 
     case 1: 
         $bg = imageCreateFromGif($file);
         break;                  
     case 2: 
         $bg = imageCreateFromJpeg($file);
         break;
     case 3: 
         $bg = imageCreateFromPng($file); 
         break;
 }
 if (strpos($x, '%') !== false) {
     $x = intval($x);
     $x = ceil(($info[0] * $x / 100) - ($width / 100 * $x));
 }
 if (strpos($y, '%') !== false) {
     $y = intval($y);
     $y = ceil(($info[1] * $y / 100) - ($height / 100 * $y));
 }
 $tmp = imageCreateTrueColor($width, $height);
 imagecopy($tmp, $bg, 0, 0, $x, $y, $width, $height); 
 imagedestroy($bg);
 imagecopy($tmp, $img, 0, 0, 0, 0, $width, $height); 
 $img = $tmp;

8. Фильтры

imagefilter($img, $filtertype, $arg1, $arg2);

//  IMG_FILTER_NEGATE 
imagefilter($img, IMG_FILTER_NEGATE);

//  IMG_FILTER_GRAYSCALE 
imagefilter($img, IMG_FILTER_GRAYSCALE);

// IMG_FILTER_COLORIZE  

   // Красный
imagefilter($img, IMG_FILTER_COLORIZE, 0, 240, 120);

   // Синий
imagefilter($img, IMG_FILTER_COLORIZE, 150, 240, 120);

   // Зеленый
imagefilter($img, IMG_FILTER_COLORIZE, 90, 240, 90);
 

//  IMG_FILTER_BRIGHTNESS
imagefilter($img, IMG_FILTER_BRIGHTNESS, 127);

//  IMG_FILTER_CONTRAST 
imagefilter($img, IMG_FILTER_CONTRAST, 100);

//  IMG_FILTER_EDGEDETECT (использует определение границ для их подсветки)
imagefilter($img, IMG_FILTER_EDGEDETECT);

//  IMG_FILTER_GAUSSIAN_BLUR 
imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);

9. Сохранение

switch ($type) {
     case 1: 
         header('Content-Type: image/gif'); 
         imageGif($img);
         break;          
     case 2: 
         header('Content-Type: image/jpeg');
         imageJpeg($img, null, 100);
         break;          
     case 3: 
         header('Content-Type: image/x-png');
         imagePng($img);
         break;
 }
 imagedestroy($img);
 exit();

До вызова функции header() скрипт ничего не должен выводить (echo?>...<?php), иначе картинка будет битой. В начало кода нужно добавить:

 header('Content-Disposition: Attachment;filename=' . basename($src));  

9.1 Сохранение изображения в файл на сервере

switch ($type) {
     case 1:
         imageGif($img, $src);
         break;          
     case 2:
         imageJpeg($img, $src, 100);
         break;          
     case 3:
         imagePng($img, $src);
         break;
 }
 imagedestroy($img);

9.2 Вывод в браузер и сохранение в файл

switch ($type) {
     case 1:
         header('Content-Type: image/gif'); 
         imageGif($img, $src);
         break;          
     case 2:
         header('Content-Type: image/jpeg');
         imageJpeg($img, $src, 100);
         break;          
     case 3:
         header('Content-Type: image/x-png');
         imagePng($img, $src);
         break;
 }
 imagedestroy($img);
 readfile($src);
 exit();

0 комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *