Модуль Image это просто суперский модуль! С его помощью программист на Kohana может легко и не сильно вдаваясь в детали обрабатывать изображения. Можно конечно залезть в библиотеку GD и делать всё там вручную. Но так пусть делают у кого времени вагон. А нам нужен результат, и быстро.
У модуля один только недостаток. Нет описания. То есть его просто нет (на момент написания материала мануал по модулю был пуст). И я спешу хоть немного восполнить пробел
Хоть всё можно подсмотреть в коде, тем не менее попробую дать небольшое описание этому модулю. Без претензий на полноту, только в качестве начального толчка.
Всё начинается с создания объекта.
1 | $image=Image::factory($localfilename); |
Указываем имя файла и получаем объект.
Пример наложения водяного знака
=====================================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // Создаём объект $image=Image::factory($localfilename); // Считываем файл водяного знака. // Это кстати тоже изображение $watermark= Image::factory($watermarkfilename); // Используем метод watermark $result= $image->watermark( // Задаём изображение для водяного знака $watermark, // Координата X для знака $image->width - $watermark->width-2, // Координата Y для знака $image->height-$watermark->height-2, // Коэффициент прозрачности 35) // Метод render - строит изображение ->render(); // Нужно задать заголовок ответа. А он зависит от типа файла. switch ($image->type){ case IMAGETYPE_JPEG: $this->request->headers['content-type'] = 'image/jpeg'; break; case IMAGETYPE_GIF: $this->request->headers['content-type'] = 'image/gif'; break; case IMAGETYPE_PNG: $this->request->headers['content-type'] = 'image/png'; break; } // Вывод готового изображения echo $result; |
Думаю общий принцип понятен, ниже я не буду приводить полных примеров, ограничиваясь только отдельной функцией.
Изменение размера изображения, а также обрезание
======================================
Для этого можно использовать функцию resize. В качестве аргумента можно указывать только новую ширину. Высота будет подобрана исходя из пропорции.
1 | $result= $image->resize($new_width); |
Для обрезания также есть отдельная функция crop. Нужно задать ширину, высоту кадра, а также смещение относительно верхнего левого угла.
1 | $result= $image->crop($width, $height, $offset_x, $offset_y); |
Последние два параметра являются необязательными.
Прочие функции
==================================
Вышеперечисленных функций среднему разработчику скорее всего хватит за глаза. Однако в модуле ещё много функций. Достаточно почитать исходник. Они достаточно хорошо описаны. Тут просто приведу список
- rotate – поворот изображения
- flip- отражение изображения
- sharpen - резкость
- reflection - добавить отражение
- background - добавить фон
- save - сохранить результат в файл.
Все эти действия можно делать в разной последовательности. Всё зависит от фантазии.
Пока всё =)
Посты по теме:
RSS-подписка