работа с изображением php

Функции графических изображений

PHP не ограничен только созданием HTML вывода. PHP может также использоваться для создания и управления различными форматами изображений, включая GIF, PNG, JPG, WBMP, и XPM. Для большего удобства, PHP может вывести потоки изображения непосредственно в браузер. Для того, чтобы использовать замечательную возможность создания изображения с помощью PHP, вам необходимо иметь библиотеку функций изображений GD. GD и PHP может также требовать других библиотек, в зависимости от того, с какими форматами изображений вы хотите работать.

Вы можете использовать функции изображений в PHP, чтобы получить возможность работать с JPEG, GIF, PNG, SWF, TIFF и изображениями JPEG2000.

Замечание: Читайте раздел требований о том, как развернуть возможности читать изображения, сохранять, изменять изображения и читать мета данные изображений, представленных цифровыми камерами.

Формат изображений, которыми вы можете управлять, зависит от версии GD, который вы устанавливаете. Версии GD старше, чем gd-1.6 поддерживают формат GIF, и не поддерживают PNG, а версии больше чем gd-1.6 и меньше чем gd-2.0.28 поддерживают PNG, но не поддерживают GIF. Поддержка формата GIF вновь стала возможной в gd-2.0.28.

Замечание: Для PHP, начиная с PHP 4.3, есть связанная версия GD lib. Эта связанная версия имеет некоторые дополнительные особенности подобно alpha blending, и должна использоваться в предпочтении к внешней библиотеке, так как ее код оптимизирован для PHP и более устойчив.

Вы можете захотеть расширить GD, чтобы иметь возможность работать с большим числом форматов изображений.

Таблица 1. Поддерживаемые форматы изображений

ФорматБиблиотеки для скачиванияПримечания
gifПоддерживаются только GD версий старше gd-1.6 и новее, чем gd-2.0.28. Только для чтения поддержка GIF доступна с PHP 4.3.0 связанной библиотекой GD. Поддержка записи доступна с PHP 4.3.9 aи с PHP 5.0.1.
jpeg-6bftp://ftp.uu.net/graphics/jpeg/
pnghttp://www.libpng.org/pub/png/libpng.htmlПоддерживается только библиотеками GD версий выше, чем gd-1.6.
xpmftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.htmlВероятно, что у вас есть эта библиотека, если ваша система имеет установленную X-среду.

Вы можете желать расширить GD, чтобы иметь дело с различными шрифтами. Следующие библиотеки шрифта поддерживаются:

Таблица 2. Поддерживаемые библиотеки шрифтов

Библиотека шрифтовРесурсы для скачиванияПримечания
FreeType 1.xhttp://www.freetype.org/
FreeType 2http://www.freetype.org/
T1libftp://sunsite.unc.edu/pub/Linux/libs/graphics/ )Поддержка шрифтов Type 1.

Замечание: Для включения поддержки exif в Windows, php_mbstring.dll должен быть загружен перед php_exif.dll в php.ini.

Таблица 3. Поддерживаемые форматы изображений

Замечание: Когда вы компилируете PHP с libpng, вы должны использовать одинаковые версии, связанные с библиотекой GD.

Таблица 4. Поддерживаемые библиотеки шрифтов

Данное расширение не определяет никакие типы ресурсов.

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

Источник

Введение

Замечание: Прочитайте раздел требований, чтобы узнать, как расширить возможности чтения, записи и модификации изображений. Чтобы иметь возможность читать мета-данные изображений, взятых с цифровых фотоаппаратов нужно, уже упомянутый модуль EXIF.

Замечание: Функция getimagesize() не требует наличия библиотеки GD.

Тогда как поставляемая с PHP библиотека GD использует менеджер памяти Zend, то системная нет. Соответственно ограничение memory_limit не работает.

GD поддерживает ряд форматов. Ниже приведён список этих форматов и пометки о доступности, включая поддержку чтения и записи.

Форматы, поддерживаемые GD

ФорматПоддержка чтенияПоддержка записиПримечания
JPEG true true
PNG true true
GIF true true
XBM true true
XPM true false
WBMP true true
WebP true true
BMP true trueДоступно с GD 2.1.0 и PHP 7.2.0

Источник

Работа с изображением php

PHP приобрел всемирную популярность не только как удобное средство вывода HTML и обработки форм, но и, во многом, благодаря набору расширений, позволяющим выполнять всевозможные стоящие перед веб-разработчиком задачи. Одним из таких расширений является библиотека GD, предназначенная для работы с растровыми изображениями.

В этой статье мы рассмотрим работу со второй версией библиотеки GD.

Сборка

Для успешного выполнения примеров из этой статьи необходимо, чтобы PHP был собран с поддержкой второй версии библиотеки GD.

Для того, чтобы узнать наличие и используемую версию графической библиотеки, воспользуемся всеми нами, без сомнения, любимой функцией phpinfo(), и взглянем на раздел «GD»:

GD Supportenabled
GD Versionbundled (2.0.15 compatible)
FreeType Supportenabled
FreeType Linkagewith freetype
GIF Read Supportenabled
JPG Supportenabled
PNG Supportenabled
WBMP Supportenabled
XBM Supportenabled
JIS-mapped Japanese Font Supportenabled

В нижеследующих строках мы видим, какие графические форматы поддерживаются данной конфигурацией библиотеки GD. В частности, работа с форматом GIF поддерживается в режиме «только чтение» из-за проблем с лицензированием используемого в GIF алгоритма компрессии.

Итак, если требуется пересборка PHP, следует это и сделать, загрузив при необходимости последнюю версию PHP, и указать при сборке параметр:

Для поддержки работы с шрифтами TrueType, обсуждаемой в главе «Вывод текста. «, также понадобится наличие библиотеки FreeType и следующие параметры конфигурационной строки:

Примечание: Для сборки GD с поддержкой GIF Write под FreeBSD, необходимо предварительно установить переменную среды WITH_LZW:
export WITH_LZW=yes

Генерация изображения с помощью PHP

Теперь приступим к написанию этого самого image.php.

Заголовок. Он же header.

Приступим теперь непосредственно к генерации картинки.

Создание изображения

Для создания изображения, в нашем распоряжении две функции:

1. imagecreate(). С помощью этой функции можно создать изображение на основе палитры, содержащей фиксированный набор цветов. Каждый цвет палитры необходимо описать с помощью функцииimagecolorallocate(). Этот способ создания изображения был единственным при работе с первой версией GD, и необходим при работе с ориентированными на палитру форматами, такими как GIF. Однако введенный во второй версии (и отныне рекомендуемый разработчиками) способ, на мой взгляд, гораздо более удобен.

2. imagecreatetruecolor(). Эта функция создает TrueColor-изображение, то есть цвет каждой точки определяется произвольным цветом, задаваемым в координатах RGB. Помимо того, что это удобнее, чем работа с палитрой, такой подход позволяет производить масштабирование изображения с гораздо меньшими потерями качества. Но об этом позже. Сейчас просто создадим изображение:

Хотя мы с этим изображением, пока что, ничего не делаем, мы обязаны освободить выделенную для него память с помощью функции imagedestroy(): к сожалению, автоматическое освобождение памяти происходит не всегда, и игнорирование рекомендации всегда использовать imagedestroy может привести к весьма серьезным утечкам памяти.

Немножко порисуем

Итак, с помощью функции imagecreatetruecolor() мы создали «труколорное» и, если верить документации, черное изображение размером 80×60. Так что, те, в чьи планы входит создание Web-галереи репродукций «квадрата Малевича», могут смело переходить к следующей главе. 🙂 Для остальных, продолжим. Нарисуем на картинке что-нибудь содержательное.

Палка, палка, огуречик, вот и вышел человечек 🙂

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Подробнее же мы разберем вот эту строку:
imagepng($image);

Вывод текста, а также диаграммы и коллекционеры марок

Используя полученные в результате рисования смайликов знания, попробуем порисовать диаграммы, а заодно и научимся выводить на картинках текст (не забудьте только о библиотеке FreeType, о необходимости наличия которой сказано в главе «Сборка».

Предположим, вы располагаете следующей важной статистической информацией о коллекционерах почтовых марок:

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Так зачем же, скажете вы, нам какие-то там TrueType-шрифты и FreeType-библиотеки, если мы и так прекрасно пишем на картинке? А вот затем, скажу я вам, что писать-то мы хотим по-русски, а встроенные шрифты о существовании кириллицы даже и не подозревают. А нам надо бы подписать столбики именно по-русски. Да и выбор встроенных шрифтов невелик.

Итак, нам понадобится:

— Функция imagettftext(), которая рисует выбранным TrueType-шрифтом на картинке,

— Какой-нибудь кириллический TrueType-шрифт. Возьмем, например, arial.ttf из всеми нами любимой Винды, да не просто возьмем, а положим его туда, где лежит наш скрипт,

— Поскольку функция imagettftext() воспринимает кодировку Unicode, но никак не Windows-1251, то нам пригодится вот такая функция для соответствующего преобразования:

— Функция imagettfbbox(), которая поможет нам вычислить высоту и ширину выводимого шрифтом текста.

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Барабанная дробь. Запускаем.

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Изменение размера: thumbnails, или «превьюшки»

В GD1, поддерживающей только изображения на основе палитры, присуствовала лишь функцияimagecopyresized(); качество уменьшенных изображений, генерируемых этой ей, мягко говоря, оставляло желать лучшего: работая с фиксированной палитрой, ограниченной 255 цветами, весьма затруднительно обеспечить качественный антиалиасинг.

Этот код работает, однако искажения, получаемые при непропорциональном изменении размера, выглядят не особенно симпатично. Более того, код получился не особенно-то универсальным: мало того, что мы можем работать только с JPEG-файлами, у нас еще и жестко заданы имена файлов и размеры получаемого изображения.

Разобрались? Поместим этот код в файл imgresize.php.

Пример использования функции img_resize:

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php
original.jpg

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php
small.jpg

Источник

Работа с изображениями на PHP с использованием GD

В этом уроке мы узнаем о библиотеке GD (Graphic Draw) в PHP. Вы увидите, как эту библиотеку можно использовать для управления изображениями путем изменения размера, обрезки, поворота или фильтрации.

Что такое GD?

PHP может сделать гораздо больше, чем просто отправлять HTML-сообщения посетителям. Например, он имеет возможность манипулировать изображениями. Не только это, но вы также можете создавать свои собственные изображения с нуля, а затем либо сохранять их, либо подавать их пользователям.

Установка

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением phpработа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Вы также можете посетить страницу требований и установки, чтобы узнать больше об установке.

Создание изображений с помощью PHP GD

Первым шагом к манипулированию изображениями с помощью PHP является загрузка их в память в качестве ресурса изображения. Этого можно добиться с помощью различных функций для разных форматов. Все эти функции имеют очень похожие имена, поэтому их легко запомнить.

Создание нового изображения

Функция imagecreatetruecolor() окажется полезной, если у вас нет исходного источника изображения, которое вы хотите изменять. Она принимает два целочисленных параметра: ширину и высоту. Она вернет ресурс изображения, если все пойдет по плану. Возвращаемый ресурс изображения в основном представляет собой черное изображение с заданной шириной и высотой.

Загрузка файла изображения

Создание изображения из строки

Вращение, масштабирование, обрезка и переворот изображения

Вращение

Масштабирование

Обрезка

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением phpработа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Изображение бабочки выше было обрезано с использованием следующего кода:

Переворот изображений

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением phpработа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Применение фильтров к изображению

Для начала укажите ресурс изображения и имя фильтра, который вы хотите применить. Вы можете установить его на один из 12 предопределенных типов фильтров, упомянутых в документах.

работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением phpработа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php работа с изображением php. Смотреть фото работа с изображением php. Смотреть картинку работа с изображением php. Картинка про работа с изображением php. Фото работа с изображением php

Другие полезные функции для работы с изображениями

Вы также должны знать о некоторых других общих функциях GD, которые могут быть полезны время от времени.

Получение размеров изображения

Сохранение изображения

Изменение размера всех изображений в каталоге

Давайте применим на практике полученные нами знания, чтобы сделать что-нибудь. В этом разделе мы изменим размер всех изображений JPEG в определенном каталоге на ширину 640 пикселей. Высота будет рассчитываться автоматически в зависимости от размеров исходного изображения.

Мы сохраним измененные изображения в новой папке под названием Resized. Все исходные изображения в этом случае имеют одинаковые размеры, но код будет работать правильно и с изображениями, имеющими разные размеры и пропорции.

К каждому из исходных файлов изображений было добавлено -1920×1080 к их имени файла, чтобы указать его размеры. Мы используем str_replace() в исходном имени файла и заменяем -1920X1080 на новый размер изображения.

Применение оттенков серого и контрастных фильтров для каждого изображения в каталоге

На этот раз мы будем применять два разных фильтра для каждого изображения в нашем каталоге и сохранять конечный результат в другом каталоге без внесения каких-либо изменений в имя файла. Давайте погрузимся в код, и я позже объясню, что делает каждая функция.

Как вы можете видеть, мы загружаем изображения из каталога Nature так же, как и в предыдущем примере. Однако на этот раз мы будем использовать функцию imagefilter() для применения фильтров на загруженном ресурсе изображения.

Заключительные мысли

Все эти функции открывают множество возможностей для облегчения работы с изображениями и в конечном итоге сэкономят вам много времени. Если у вас есть какие-либо вопросы, связанные с этим учебным руководством, пожалуйста, дайте мне знать в комментариях.

Источник

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

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