РазработкаWideImage - удобная работа с изображениями в PHP

Опубликовано 30 мая 2010 Комментарии (3)

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

В этой заметке я расскажу об классе который делает всю рутинную работу за нас и называется он WideImage. Мне понравился этот инструмент тем что он написан в ООП стиле, хороший, чистый и расширяемый код и плюс ко всему отлично справляется со своими обязаннастями. И главное манипулировать изображениями становится очень легко.

У WideImage много разных возможностей и настроек, я расскажу только об основных и о тех которые использовал сам, с остальными возможностями можно ознакомится на оффициальном сайте, благо там имеется нормальная документация и примеры использования.

1. Загрузка

Поддерживаются разные способы загрузки картинок.
$img = WideImage::load('http://url/image.png');
$img = WideImage::load('/path/to/image.png');
$img = WideImage::load($image_resource);
$img = WideImage::load($string);

2. Изменение размера

include "path-to/WideImage.php";
$image = WideImage::load("path-to/image.jpg");
$resized = $image->resize(400, 300);
$resized->saveToFile("small.jpg");

Как видно тут всё просто и понятно. Берём картинку с диска изменяем её размер в рамках 400*300. Хочу обратить внимание что изменение размера производится с учётом пропорции, нам не нужно беспокоится о том что картинка растянется и будет не красива, библиотека всё сделает за нас. После ресайза картинка сохраняется с новым именем в формате .jpg.
Ещё одна удобная фишка этого инструмента то, что формат картинки определяется автоматически по расширению принимаемого файла и по расширению имени файла при сохранении, т.е. мы получаем ещё и удобный конвертер изображений.

3. Обрезка

include "path-to/WideImage.php";
$image = WideImage::load("path-to/image.jpg");
$cropped = $image->crop('center', 'center', 200, 250);
$cropped->saveToFile("small.jpg");

Этот код вырежет середину размером 200*250 из большой картинки. Удобно при обработки аваторов на сайтах. Так же есть и другие способы обрезки картинок:
$cropped = $image->crop(0, 0, 100, 50);
$cropped = $image->crop('50%-100', '50%-125', 200, 250);
$cropped = $image->crop('100%-110', '100%-30', 100, 20);
$cropped = $image->crop('right – 10', 'bottom – 10', 100, 20);

Как работают эти функции думаю не требует комментариев.

4. Наложение картинок

$img = WideImage::load('pic.jpg');
$watermark = WideImage::load('logo.jpg');
$new = $img->merge($watermark, 10, 10, 30);
$new->saveToFile("new.jpg");

Вот так вот просто можно наложить одну картинку на другую, широко используется для создания водяных знаков на фотографиях.

5. Выдача картинки в браузер

Рассмотрим функционал скрипта который берёт путь к картинки из URL адреса, изменяет её размер и возвращает браузеру одновременно оптимизирую по качеству.
WideImage::load($_GET['img'])->resize(500, 300)->output('jpg', 90);

Да, это так просто!

Оффициальный сайт

Метки: Class, PHP, инструменты

Комментарии:

aktuba 30 май 2010, 13:08
Насколько помню, ты CI вроде использовал. Чем встроенная либа не устроила? Когда я делал binimage.org, был необходим imagemagick, пришлось доделывать/переделывать либу под кохану… А эта либа чем отличается от встроенной в любой fw?
Ответить
Ladygin 30 май 2010, 13:28
Эта библиотека мне понравилась больше по удобству использования по качеству кода (PHP5, ООП) и не привязана к фрэймворку, т.е. более универсальна.
CI сейчас уже не использую, перешёл на ZF, а там нет встроеной либы для работы с картинками. Из того что нашёл мне понравилась WideImage.
Ответить
MpaK 01 июнь 2010, 18:43
удОбная работа — в заголовке поправьте…

библиотека слабая, phpThumb phpthumb.gxdlabs.com посмотрите, там и adaptiveResize есть и вращения и плагины можно писать
Ответить

Комментировать

*Логин:

*E-mail:
(сохранность гарантируем)

Сайт:

Aptana Class CodeIgniter Flash IDE JavaScript Linux PHP PostgreSQL SSH Ubuntu Zend Framework cms css jQuery online-приложения wordpress Базы данных Книги Кэширование ООП Ссылки Типографика вдохновение вебдизайн виджеты дизайн заголовки инструменты поддомены разработка регистрация

Блог
Новости

Новости индустрии

Пожертвовать