GD Graphics Library
GD Graphics Library (GD) — программная библиотека, написанная Томасом Баутелом (Thomas Boutell) и другими разработчиками для динамической работы с изображениями. Изначальный язык программирования библиотеки — ANSI C, но разработаны интерфейсы для множества других языков программирования. Библиотека позволяет создавать изображения в форматах GIF, JPEG, PNG и WBMP. Поддержка GIF была прекращена в 1999, когда Unisys аннулировала свободную лицензию для бесплатного и некоммерческого ПО на использование работающего в GIF метода компрессии LZW. 7 июля 2004 года, когда срок действия патента истек, поддержка GIF была возобновлена.
Название GD изначально обозначало «GIF Draw». Однако, после аннулирования лицензии Unisys, аббревиатура расшифровывается как «Graphics Draw».
GD позволяет создавать изображения, состоящие из линий, дуг, текста (включая программный выбор шрифтов) и других изображений, а также использовать различные цвета.
В версии 2.0 добавлена поддержка 32-битных (truecolor) изображений, альфа-каналов, дискретизация изображений (для плавного изменения размера 32-битных изображений) и многое другое.
Обзор программы настройки газодельной системы TE-GD.
GD поддерживает множество языков программирования, включая C, PHP, Perl, Python, O’Caml, Tcl, Lua, Pascal, GNU Octave, Common Lisp, Scheme и REXX [5] . Имеется также инструмент, называемый fly, который позволяет получать доступ к GD из любого языка программирования при использовании командной строки.
- 1 GD в различных языках программирования
- 1.1 PHP
Источник: wiki2.org
GD Graphics Library
GD Graphics Library (GD) — программная библиотека, написанная Томасом Баутелом (Thomas Boutell) и другими разработчиками для динамической работы с изображениями. Изначальный язык программирования библиотеки — ANSI C, но разработаны интерфейсы для множества других языков программирования. Библиотека позволяет создавать изображения в форматах GIF, JPEG, PNG и WBMP. Поддержка GIF была прекращена в 1999, когда Unisys аннулировала свободную лицензию для бесплатного и некоммерческого ПО на использование работающего в GIF метода компрессии LZW. 7 июля 2004 года, когда срок действия патента истек, поддержка GIF была возобновлена.
Название GD изначально обозначало «GIF Draw». Однако, после аннулирования лицензии Unisys, аббревиатура расшифровывается как «Graphics Draw».
GD позволяет создавать изображения, состоящие из линий, дуг, текста (включая программный выбор шрифтов) и других изображений, а также использовать различные цвета.
В версии 2.0 добавлена поддержка 32-битных (truecolor) изображений, альфа-каналов, дискретизация изображений (для плавного изменения размера 32-битных изображений) и многое другое.
GD поддерживает множество языков программирования, включая C, PHP, Perl, Python, O’Caml, Tcl, Lua, Pascal, GNU Octave, Common Lisp, Scheme и REXX [4] . Имеется также инструмент, называемый fly, который позволяет получать доступ к GD из любого языка программирования при использовании командной строки.
- 1 GD в различных языках программирования
- 1.1 PHP
GD в различных языках программирования
PHP
В PHP библиотека GD значительно расширена. Начиная с версии PHP 4.3 входит в стандартную поставку интерпретатора. До этой версии могла подключаться как отдельная библиотека. Поддерживает почти все существующие форматы графики для использования в веб: PNG, JPEG, GIF, ICO и различные методы работы с графическими файлами (применение фильтров, текст, изменение размера, и прочее).
Часто используется для визуализации статистических файлов, а именно: графиков, диаграмм и т. д.
Текущая версия библиотеки — 2.0
Пример работы с библиотекой (PHP)
// Создаём изображение шириной в 400 и длиной в 50 пикселов $image = imagecreate(400,50); // Задаём цвет изображения (RGB) imagecolorallocate($image,0,0,0); // Задаём цвет текста $text_color = imagecolorallocate($image,0,255,255); // Добавляем текст на картинку imagestring($image,21,0,0,’Some text. ‘,$text_color); // Отправляем заголовки серверу header(‘Content-Type: image/png;’); //Задаём тип содержимого imagepng($image);
Примечания
- ↑Developers — LibGDАрхивировано 8 октября 2008 года.
- ↑ 2,02,1Main Page — LibGD(неопр.) . Дата обращения: 8 мая 2022.Архивировано 8 июля 2016 года.
- ↑Архивированная копия(неопр.)(недоступная ссылка). Дата обращения: 14 октября 2008.Архивировано 25 января 2009 года.
- ↑Bindings — LibGD(неопр.)(недоступная ссылка). Дата обращения: 14 октября 2008.Архивировано 5 октября 2008 года.
См. также
Ссылки
- GD Graphics Library (Официальный сайт — текущая версия) (англ.)
- GD Graphics Library (Официальный сайт — предыдущая версия) (англ.)
- Image Functions (PHP), поддержка GD в PHP(англ.)
- BMP в GD поддержка BMP в GD (рус.)
Учебные пособия
- Введение в функции работы с изображениями на PHP(англ.)
- Введение в работу с изображениями на PHP + GD(англ.)
- Описание функций GD(рус.)
Источник: xn--h1ajim.xn--p1ai
Работа с изображениями на PHP с использованием GD

Monty Shokeen Aug 31, 2018 (Updated May 28, 2022)
Read Time: 9 min
Интернет будет довольно скучным без изображений. Тем не менее, поддержка и управление сотнями или тысячами изображений для вашего веб-сайта может быть головной болью. По мере изменения дизайна вашего сайта вам может потребоваться изменить все ваши изображения — например, преобразовать все ваши изображения в оттенки серого или изменить их размер до 50% от их первоначального размера. Вы также можете сжимать или обрезать разные изображения. Выполнение этого вручную занимает много времени и подвержено ошибкам, но с небольшим знанием программирования оно может быть автоматизировано.
В этом уроке мы узнаем о библиотеке GD (Graphic Draw) в PHP. Вы увидите, как эту библиотеку можно использовать для управления изображениями путем изменения размера, обрезки, поворота или фильтрации.
Что такое GD?
PHP может сделать гораздо больше, чем просто отправлять HTML-сообщения посетителям. Например, он имеет возможность манипулировать изображениями. Не только это, но вы также можете создавать свои собственные изображения с нуля, а затем либо сохранять их, либо подавать их пользователям.
PHP может удовлетворить практически все ваши основные потребности в управлении изображениями, используя библиотеку GD — сокращение для Graphic Draw.
Установка
Если вы работаете в Windows, вы можете включить файл php_gd2.dll в качестве расширения в php.ini. Если вы используете что-то вроде XAMPP, вы найдете файл php_gd2.dll в каталоге xamppphpext. Вы также можете проверить, установлена ли GD в вашей системе, с помощью функции phpinfo(); . Если вы просмотрите полученный результат, вы найдете что-то похожее на следующее.

Вы также можете посетить страницу требований и установки, чтобы узнать больше об установке.
Создание изображений с помощью PHP GD
Первым шагом к манипулированию изображениями с помощью PHP является загрузка их в память в качестве ресурса изображения. Этого можно добиться с помощью различных функций для разных форматов. Все эти функции имеют очень похожие имена, поэтому их легко запомнить.
Создание нового изображения
Функция imagecreatetruecolor() окажется полезной, если у вас нет исходного источника изображения, которое вы хотите изменять. Она принимает два целочисленных параметра: ширину и высоту. Она вернет ресурс изображения, если все пойдет по плану. Возвращаемый ресурс изображения в основном представляет собой черное изображение с заданной шириной и высотой.
Загрузка файла изображения
Если вы планируете работать с изображениями, которые уже хранятся где-то, вам пригодится использование таких функций, как imagecreatefromjpeg() , imagecreatefrompng() и imagecreatefromgif() . Они создадут ресурс изображения со всеми данными из загруженного файла изображения. Эти функции принимают единственный параметр, который указывает местоположение загружаемого изображения, как URL-адрес или путь к файлу.
Создание изображения из строки
Библиотека GD также позволяет создавать изображения из строки, используя функцию imagecreatefromstring() в PHP. Помните, что вам нужно будет использовать base64_decode() для данной строки перед imagecreatefromstring() . Функция может автоматически определять, является ли тип изображения JPG, PNG, GIF или другим поддерживаемым форматом.
Вращение, масштабирование, обрезка и переворот изображения
Некоторые общие операции, которые вы можете выполнять на ресурсе изображения, — это вращение, масштабирование, обрезка и переворот.
Вращение
Вы можете повернуть изображение, которое вы уже загрузили в скрипт, используя функцию imagerotate() . Она будет вращать изображение под заданным углом, используя центр изображения в качестве центра вращения. Угол представлен как значение с плавающей точкой, и PHP считает, что это значение угла вращения. Иногда повернутое изображение будет иметь разные размеры по сравнению с исходной версией. Это означает, что после поворота вы получите некоторую открытую область. Третий параметр функции imagerotate() может использоваться для задания цвета фона пустой области после вращения.
Масштабирование
Очень просто масштабировать изображение с помощью библиотеки GD. Вам просто нужно передать ресурс изображения, а также ширину и высоту в функцию imagescale() . Если вы опустите высоту, GD будет масштабировать изображение до указанной ширины, сохраняя соотношение сторон. Вы также можете указать режим масштабирования изображения. Его можно установить в IMG_NEAREST_NEIGHBOUR , IMG_BILINEAR_FIXED , IMG_BICUBIC и т.д. Важная вещь, которую вам нужно запомнить, это то, что эта функция возвращает новый источник масштабированного изображения вместо того, чтобы изменять исходный.
Обрезка
Вы можете обрезать любой ресурс изображения с помощью функции imagecrop() в GD. Первый параметр — исходный ресурс изображения, а второй параметр — ассоциативный массив с ключами x , y , width и height , определяющий размеры позиции окна обрезки.

Изображение бабочки выше было обрезано с использованием следующего кода:
$im_php = imagecreatefromjpeg(‘path/to/image’); $size = min(imagesx($im_php), imagesy($im_php)); $im_php = imagecrop($im_php, [‘x’ => $size*0.4, ‘y’ => 0, ‘width’ => $size, ‘height’ => $size]); $im_php = imagescale($im_php, 300);
В основном, мы сохраняем длину самой маленькой стороны в переменной $size . Затем эта переменная используется для определения границы нашего прямоугольника обрезки. Наконец, изображение уменьшено таким образом, что оно составляет всего 300 пикселей в ширину и длину. Это дает нам квадратное изображение.
Переворот изображений
Изображения можно перевернуть горизонтально, вертикально или в обоих направлениях с помощью функции imageflip() . Она принимает ресурс изображения, который вы хотите перевернуть, в качестве первого параметра, и режим переворота в качестве второго параметра. Режим переворота может быть установлен на IMG_FLIP_HORIZONTAL , IMG_FLIP_VERTICAL или IMG_FLIP_BOTH .

Верхнее левое изображение на приведенном выше рисунке является оригиналом. Верхнее правое изображение было создано с помощью IMG_FLIP_HORIZONTAL , нижнее левое изображение было создано с использованием IMG_FLIP_VERTICAL , а нижнее правое изображение — с помощью IMG_FLIP_BOTH . (Изображение вороны от Pixabay.)
Применение фильтров к изображению
GD также имеет очень полезную функцию imagefilter() , которая может применять фильтры на разных ресурсах изображений, загружаемых с использованием функций из предыдущих изображений. Эта функция может принимать различные параметры в зависимости от применяемого фильтра.
Для начала укажите ресурс изображения и имя фильтра, который вы хотите применить. Вы можете установить его на один из 12 предопределенных типов фильтров, упомянутых в документах.
- IMG_FILTER_NEGATE : обращает (меняет как в негативе) цвета на изображении
- IMG_FILTER_GRAYSCALE : удаляет цвет из изображения
- IMG_FILTER_BRIGHTNESS : делает изображение ярче или темнее
- IMG_FILTER_CONTRAST : увеличивает контрастность изображения
- IMG_FILTER_COLORIZE : оттеняет изображение в выбранный цвет
- IMG_FILTER_EDGEDETECT : выделяет края изображения
- IMG_FILTER_EMBOSS : похоже на обнаружение краев, но придает каждому краю приподнятый вид
- IMG_FILTER_GAUSSIAN_BLUR : размывает изображение с использованием метода Гаусса
- IMG_FILTER_SELECTIVE_BLUR : размывает изображение с помощью выборочного метода
- IMG_FILTER_MEAN_REMOVAL : эффект создания стилизованного изображения
- IMG_FILTER_SMOOTH : сглаживает зубчатые края изображения
- IMG_FILTER_PIXELATE : делает изображение пикселизированным
Некоторые фильтры, такие как NEGATE , GRAYSCALE , EDGE_DETECT и EMBOSS , не нуждаются в дополнительных данных. Другие фильтры, такие как BRIGHTNESS , CONTRAST и SMOOTH , могут принимать дополнительный параметр, который определяет количество яркости, контрастности или гладкости конечного изображения. Параметр PIXELATE позволяет указать два дополнительных параметра: размер блока, а также режим пикселизации. Наконец, фильтр COLORIZE принимает четыре параметра, которые определяют значения для red, green и blue компонентов, а также альфа-канала.

Изображение в левом верхнем углу является оригиналом. Верхнее правое изображение было создано с использованием фильтра COLORIZE , нижний левый был создан с использованием фильтра GRAYSCALE , а изображение в правом нижнем углу было создано с использованием фильтра BRIGHTNESS . (Это изображение бабочки было найдено в Pixabay.)
Другие полезные функции для работы с изображениями
Вы также должны знать о некоторых других общих функциях GD, которые могут быть полезны время от времени.
Получение размеров изображения
Вы можете определить ширину и высоту ресурса изображения с помощью функций imagesx() и imagesy() .
Другая функция, называемая getimagesize() , также может использоваться для получения ширины и высоты изображения вместе с его типом. Эта функция возвращает массив с элементами, определяющими ширину, высоту и формат изображения. Первые два элемента массива описывают ширину и высоту, а третий элемент содержит константу, определяющую формат файла: один из IMAGETYPE_PNG , IMAGETYPE_GIF и т.д.
Сохранение изображения
После того, как вы внесете все необходимые изменения в изображение, вы, скорее всего, захотите либо вывести его в браузер, либо сохранить его как файл. В любом случае вам придется использовать одну из функций вывода GD, таких как imagejepg() , imagepng() или imagegif() . Вы передадите свой ресурс изображения одной из этих функций вывода, и если вы хотите сохранить изображение в файл, вы также укажете имя файла. Вы также можете управлять качеством выходного изображения с помощью третьего необязательного параметра в зависимости от типа изображения.
Изменение размера всех изображений в каталоге
Давайте применим на практике полученные нами знания, чтобы сделать что-нибудь. В этом разделе мы изменим размер всех изображений JPEG в определенном каталоге на ширину 640 пикселей. Высота будет рассчитываться автоматически в зависимости от размеров исходного изображения.
Мы сохраним измененные изображения в новой папке под названием Resized. Все исходные изображения в этом случае имеют одинаковые размеры, но код будет работать правильно и с изображениями, имеющими разные размеры и пропорции.
$directory = ‘Nature/’; $images = glob($directory.»*.jpg»); foreach($images as $image) < $im_php = imagecreatefromjpeg($image); $im_php = imagescale($im_php, 640); $new_height = imagesy($im_php); $new_name = str_replace(‘-1920×1080’, ‘-640x’.$new_height, basename($image)); imagejpeg($im_php, $directory.’Resized/’.$new_name); >
В приведенном выше коде мы начнем с использования функции glob() , чтобы найти все изображения с расширением .jpg в каталоге под названием Nature. Файлы изображений хранятся в массиве, и мы поочередно перебираем их.
Поскольку все изображения, которые мы хотим изменить, являются JPEG, мы используем функцию imagecreatefromjpeg() , чтобы загрузить их в скрипт. Затем используется функция imagescale() для изменения размера изображения до определенной ширины — 640 пикселей в нашем случае. Мы не указали фиксированную высоту, чтобы высота была рассчитана автоматически.
К каждому из исходных файлов изображений было добавлено -1920×1080 к их имени файла, чтобы указать его размеры. Мы используем str_replace() в исходном имени файла и заменяем -1920X1080 на новый размер изображения.
Наконец, мы сохраняем измененные изображения в папке с именем Resize с новыми именами файлов. Вы также можете передать третий параметр функции imagejpeg() , чтобы установить качество сохраненного файла изображения. Если третий параметр опущен, изображения сохраняются с качеством по умолчанию 75.
Применение оттенков серого и контрастных фильтров для каждого изображения в каталоге
На этот раз мы будем применять два разных фильтра для каждого изображения в нашем каталоге и сохранять конечный результат в другом каталоге без внесения каких-либо изменений в имя файла. Давайте погрузимся в код, и я позже объясню, что делает каждая функция.
$directory = ‘Nature/’; $images = glob($directory.»*.jpg»); foreach($images as $image) < $im_php = imagecreatefromjpeg($image); imagefilter($im_php, IMG_FILTER_GRAYSCALE); imagefilter($im_php, IMG_FILTER_CONTRAST, -25); $new_name = basename($image); imagejpeg($im_php, $directory.’Grayscale/’.$new_name); >
Как вы можете видеть, мы загружаем изображения из каталога Nature так же, как и в предыдущем примере. Однако на этот раз мы будем использовать функцию imagefilter() для применения фильтров на загруженном ресурсе изображения.
Обратите внимание, что imagefilter() изменяет исходное изображение и возвращает TRUE или FALSE в зависимости от успеха или провала операции. Это отличается от функции imagescale() , которую мы использовали в предыдущем разделе, которая вернула масштабированный ресурс изображения.
Еще одна важная вещь, которую следует иметь в виду, заключается в том, что контрастный фильтр принимает значения от -100 до 100. Отрицательные значения подразумевают большую контрастность, а положительные значения означают меньший контраст. Это противоположно тому, что могут ожидать некоторые люди! Значение 0 оставляет изображение неизменным.
С другой стороны, фильтр яркости имеет минимальный и максимальный пределы -255 и 255. Отрицательное значение в этом случае подразумевает минимальную яркость, а положительное значение означает максимальную яркость.
Мы получаем имя файла из пути файла, используя функцию basename() , а затем сохраняем изображение с помощью функции imagejpeg() .
Заключительные мысли
Цель этого урока состояла в том, чтобы познакомить вас с библиотекой GD на PHP и узнать, как использовать все ее функции, чтобы сделать вашу жизнь проще. Вы можете использовать примеры в конце урока в качестве руководства для написания собственных скриптов работы с изображениями. Например, вы можете изменить размер изображения только в том случае, если оно больше заданного предела, определяя его ширину с помощью функции imagesx() .
Все эти функции открывают множество возможностей для облегчения работы с изображениями и в конечном итоге сэкономят вам много времени. Если у вас есть какие-либо вопросы, связанные с этим учебным руководством, пожалуйста, дайте мне знать в комментариях.
Источник: code.tutsplus.com
GD Graphics Library

17 января, 2015 0
GD Graphics Library (GD) – свободная программная библиотека, написанная Томасом Баутелом (Thomas Boutell) и другими разработчиками для динамической работы с изображениями. Изначальный язык программирования библиотеки — ANSI C, но разработаны интерфейсы для множества других языков программирования.
Библиотека GD позволяет создавать изображения в форматах GIF, JPEG, PNG и WBMP. Поддержка GIF была прекращена в 1999, когда Unisys аннулировала свободную лицензию для бесплатного и некоммерческого программного обеспечения на использование работающего в GIF метода компрессии LZW. 7 июля 2004 года, когда срок действия патента истек, поддержка GIF была возобновлена.
Название GD изначально обозначало «GIF Draw». Однако, после аннулирования лицензии Unisys, аббревиатура расшифровывается, как «Graphics Draw».
GD позволяет создавать изображения, состоящие из линий, дуг, текста (включая программный выбор шрифтов) и других изображений, а также использовать различные цвета.
В версии 2.0 добавлена поддержка 32-битных (truecolor) изображений, Альфа-каналов, дискретизация изображений (для плавного изменения размера 32-битных изображений) и многое другое.
GD поддерживает множество языков программирования, включая C, PHP, Perl, Python, O’Caml, Tcl, Lua for Windows, Pascal, GNU Octave, Common Lisp, Scheme и REXX. Имеется также инструмент, называемый fly, который позволяет получать доступ к GD из любого языка программирования при использовании командной строки.
В PHP библиотека GD значительно расширена. Начиная с версии PHP 4.3 входит в стандартную поставку интерпретатора. До этой версии могла подключаться, как отдельная библиотека. Поддерживает почти все существующие форматы графики для использования в веб: PNG, JPEG, GIF, ICO и различные методы работы с графическими файлами (применение фильтров, текст, изменение размера, и прочее).
Часто библиотека GD используется для визуализации статистических файлов, а именно: графиков, диаграмм и т. д..

Ссылки
Похожие программы
JMCAD
Icons from File
Setka

Reflet
Bytescout BarCode Generator
Texmaker

Apache Velocity

Java Runtime Environment
Hornil StyleCapture

Umbrello
Источник: wikiprograms.org
Основы работы с библиотекой GD
От автора: очень часто при разработке скриптов необходимо работать с изображениями, используя язык PHP. К примеру, генерация изображений с нуля или редактирование уже существующих и т.д. Поэтому в данном уроке мы с Вами изучим основы работы с библиотекой GD, которая предназначена для обработки изображений средствами языка PHP.


Введение
Язык PHP достаточно разнообразен и его использование не ограничивается только созданием скриптов, выполняющим различные манипуляции с данными. Он также позволяет работать с различными графическими элементами, в частности с изображениями, разных форматов. Для этих целей написана, специальная библиотека, под названием GD, которая расширяет его стандартный функционал. Данная библиотека, чем-то похожа на небольшой графический редактор, используя который, Вы сможете легко обрабатывать изображения, используя только язык PHP. Библиотека GD, позволяет создавать новые изображения, редактировать уже существующие, копировать одни изображения на другие, изменять размеры, а также наносить текст на изображения.
Поэтому, так как, библиотека является расширением, значит необходимо убедиться, что она подключена в Вашем интерпретаторе языка PHP. Для этого необходимо открыть главный конфигурационный файл PHP – php.ini. Если Вы используете Denver, значит Вам необходимо, перейти в виртуальный диск, созданный им (в моем случае это диск Z). И затем по адресу: Z:usrlocal php5. В корне папки php5 Вы найдете необходимый файл. Далее открываем данный файл в текстовом редакторе, находим строчку: extension=php_gd2.dll

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
Если напротив данной строки, нет символа “;” (точка с запятой), значит расширение подключено, если же символ есть – его необходимо удалить и перезапустить Denver. В этом случае Вы подключите библиотеку. Теперь можно приступать к работе с данной библиотекой.
Основы создания и редактирования изображений
Для того чтобы вывести на экране изображение, необходимо использовать тег img и в атрибуте src, данного тега, нужно указать путь к изображению. Но в нашем случае изображение создается при помощи языка PHP. Поэтому в атрибуте src мы укажем путь к файлу php, который создаст нужное нам изображение. Значит, создаем файл index.php, который будет выводить на экран изображение, со следующим содержимым:
Источник: webformyself.com