Image Moo обарботка изображений CodeIgniter

5 324 просмотра 5 комментариев 26 декабря 2012

Встроенная в CodeIgniter библиотека для работы с изображениями не очень удобная. При работе с ней я часто сталкивался с необходимостью написания большого количества кода, и вообще какая то она сыроватая. Тогда я занялся поиском альтернативной библиотеки. Ей стала Image Moo, она написана для использования на PHP 5 или более поздних версиях и обрабатывает изображения только с помощью GD2.

Установка

Скопируйте разархивированный файл в /system/application/libraries для CI > 1.7.2 и /application/libraries для CI 2.

Функции

load($x) - загружает основное изображение, тут $x путь к изображению, поддерживаются форматы JPG, PNG, GIF. Это изображение в дальнейшем используется для всех процессов и хранится в памяти до завершения.

save($x,$overwrite=FALSE) - сохраняет обработанное изображение(если обрабатывалось) в файл $x поддерживаются форматы JPG, PNG, GIF. Если $overwrite не установлен, сохранение может потерпеть неудачу при совпадении имен. Если $overwrite=TRUE файл будет перезаписан при совпадении имен.

save_dynamic($filename="") - Изображение посылается браузеру напрямую, с заголовками изображения. Используйте $filename чтоб вернуть png/jpg/gif, по умолчанию возвращает jpeg.

save_pa($prepend="", $append="", $overwrite=FALSE) - Сохраняет файл используя оригинальное название и путь, но добавляет $prepend в начало имени файла и $append в конец имени файла, если оригинальное имя файла /this/that/file.jpg вы можете использовать save_pe("pre_", "_app", TRUE) для сохранения как /this/that/pre_file_app.jpg. $overwrite указывает перезаписывать ли файл.

resize($x,$y,$pad=FALSE) - Пропорциональное изменение размера оригинального изображения и помощью размеров заданных в $x(ширина) и $y(высота), если $pad установлен и изображение меньше заданных размеров в $x и $y возвращает изображение вписанное в рамки заданных размеров используя выбранный цвет фона(устанавливается в set_background_colour) для незаполненного пространства(надеюсь если понятно объяснил)))

resize_crop($x,$y) - Пропорционально изменяет размер оригинального изображения чтоб вписать в рамки $x и  $y, но обрезает его чтоб вписать в размеры и полностью заполнить пространство

stretch($x,$y) - Вписывает оригинальное изображение в указанные рамки $x и $y, будет растягивать, сжимать его но впишет.

crop($x1,$y1,$x2,$y2) - Обрезает оригинальное изображение по координатам от верхней левой - $x1,$y1 до нижней правой $x2,$y2. Размер нового изображения = $x2-x1 x $y2-y1

rotate($angle) - Поворачивает изображение над которым ведется обработка на $angle градусов, обычно это 90,180,270 но можно использовать любое значение. Незаполненные поля будут заполнены выбранным цветом фона(устанавливается в set_background_colour)

load_watermark($filename, $transparent_x=0, $transparent_y=0) - Загружает указанный в $filename файл в качестве водяного знака, если используете PNG32/24 используйте $transparent_x, $transparent_y чтобы указать конкретную позицию цвета который должен быть прозрачным.

make_watermark_text($text, $fontfile, $size=16, $colour="#ffffff", $angle=0) - Создает водяной знак из вашего текста $text и шрифта .ttf $fontfile. Можно указать размер шрифта $size, цвет $colour, угол поворота $angle.

watermark($position, $offset=8, $abs=FALSE) - Использует загруженный водяной знак для того чтоб поместить его на изображение. $position (позиция) указывается по принципу расположения кнопок на цифровой панели, например 7=Верхний левый угол, 3=Нижний правый $offset это отступ, если $abs установлен в TRUE тогда $position и $offset указывают конкретные координаты в пикселях, для расположения водяного знака. 

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

shadow($size=4, $direction=3, $colour="#444") - добавляет тень

border($width,$colour="#000") - добавляет границ

border_3d($width,$rot=0,$opacity=30) - добавляет объемную границу

filter($function, $arg1=NULL, $arg2=NULL, $arg3=NULL, $arg4=NULL) - добавляет стандартные фильтры изображений GD2

round($radius,$invert=FALSE,$corners(array[top left, top right, bottom right, bottom left of true or False)="") - закругляет изображение

Помощники

display_errors($open = '<p>', $close = '</p>') - Показывает ошибки в стандартном CI стиле. Пример:

if ($this->image_moo->error) echo $this->image_moo->display_errors();

set_jpeg_quality($x) - устанавливает качество записи JPEG файлов для сохранения, по дефолту 75, возможные значения от 1 до 100

set_watermark_transparency($x) - устанавливает прозрачность водяного знака 1-100, 1-очень прозрачно, 100-не прозрачно

check_gd() - проверяет доступна ли на сервере GD библиотека

clear_temp() - вызовите чтоб очистить настройки для изображения чтобы использовать его снова.

clear() - Используйте для очистки загруженных изображений из памяти

5 комментариев

Вы способны создать cms на базе CI подобную drive2.ru ?
Обратная связь, и контакты справа для таких вопросов есть.
Сергей
22 марта 2013
а пример контроллера ни как?
Есть отличная либа Zebra_Image, активно её юзаю в своих проектах на Yii.
Евгений
7 декабря 2015
Добрый ден. Ребят при загрузке png фото прозрачный фон становится черным, как оставить его прозрачным ну или хотя бы белым сделать?

Вы можете оставить комментарий