Функции 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 комментариев