PHP - ресайз, обработка изображений. Методы, библиотеки

Задача ресайза (resize - изменение размеров) изображений  возникает практически в любом более-менее серьёзном web-приложении. Аватарки, предпросмотр фотографий, миниатюры (thumbnails), нанесение водяных знаков для защиты картинок от копирования- все они предполагают предварительную обработку изображений..

В PHP для обработки изображений можно использовать встроенные функции библиотеки GD (в последнее время не встречал ни одного хостинга, где бы её не было) или класс Imagick для работы с ImageMagick. Для большинства рутинных задач, касающихся обработки изображений на PHP их вполне достаточно - примеры можно посмотреть прямо в мануале. (На самом деле, библиотек для работы с изображениями  больше /Gmagick, Cairo.. А есть ещё библиотеки не упомянутые в PHP-мануале/, но, на мой взгляд, эти наиболее популярны).

Однако, встроенные функции обработки изображений довольно громоздки и характеризуются отсутствием универсальности (т.е., к примеру, в GD для открытия изображения нужно сначала определить его формат.. и, в зависимости от формата, использовать соответствующую функцию). Поэтому довольно широкое распространение получили классы-надстройки для обработки изображений. В зависимости от задач, стоящих перед разработчиком, иногда имеет смысл использовать самописную функцию на 3-4 строчки.. Но о готовых решениях следует знать хотя бы то, что они существуют и позволяют делать.

PHP-Классы и библиотеки для обработки изображений

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

Более-менее серьезное решение для обработки картинок на PHP на мой взгляд должно включать:

  • ресайз (уменьшение изображения) как в файл, так и на стандартный вывод (в браузер т.е.), как с сохранением пропорций, так и с искажением, как в процентах, так и в точках
  • crop (обрезка до указанных размеров)
  • resize+crop (при необходимости уместить в прямоугольник нужного размера с обрезкой “лишнего”)
  • наложение водяных знаков (watermark) как текстом, так и изображением в различной позиции (верх/центр/низ,лево/центр/право, попиксельное задание координат) и различной прозрачностью (alpha)
  • сохранять изображения в распространенные форматы (jpg,gif,bmg,png8,png24) с возможностью задания настроек-опций (качество в JPG, прозрачность в GIF|PNG и т.д.)
  • использование фильтров (размытие, яркость/контраст,негатив,Sepia) будет плюсом

PHPThumb

PHPThumb одно из наиболее давно зарекомендовавших себя решений - работает с PHP 4.0.6 ( php 5 позволит использовать больше фильтров). Позволяет всё из вышеперечисленного и немного больше. Может работать как с GD, так и с ImageMagick.

http://phpthumb.sourceforge.net/

Последний релиз на сегодняшний день - 2011

WideImage

Как и старший “брат” может все из вышеперечисленного. Наглядно возможности представлены на демо-страничке. Проект поддерживает php5, имеет открытый код и хостится на sourceforge.net.

http://wideimage.sourceforge.net/examples/

Imagine

требует для работы PHP 5.3 и выше, также работает с  GD, Imagick, GMagick

ttps://github.com/avalanche123/Imagine

PHPThumbnailer

Проект некоторое время довольно активно  развивался, однако со временем эта активность практически “сошла на нет”. И, несмотря на то, что хостится на github-е, последние коммиты были довольно давно.

http://phpthumb.gxdlabs.com/

Asido

Последние новости проекта датируются 2007 годом..
http://asido.info/

Рекомендации по ресайзу, хаки, лучшие практики (с)

Ресайз изображений “на лету” довольно удобен в плане реализации, однако использует необоснованно много ресурсов сервера. Естественно, более правильный вариант - ресайзить изображения заранее и сохранять (кэшировать) их на диск. Распространённый метод - использование mod_rewrite в .htaccess для перенаправления запросов к несуществующим файлам на php-файл, который будет генерировать нужную превьюшку и сохранять её на диск.

Кэширование отресайзенных изображений подробно рассмотрено в статье http://mrphp.com.au/code/image-cache-using-phpthumb-and-modrewrite

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

1 комментарий к записи “PHP - ресайз, обработка изображений. Методы, библиотеки”

  1. Kumar сообщает :

    Для ресайза на php использую следующий продукт:
    http://true-coder.ru/php/toolkit-dlya-resajza-i-kropa-izobrazhenij-na-php.html

    Он очень удобен и имеет в запасе большой функционал.

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