Kohana. Модуль Image

kohana Модуль Image это просто суперский модуль! С его помощью программист на Kohana может легко и не сильно вдаваясь в детали обрабатывать изображения. Можно конечно залезть в библиотеку GD и делать всё там вручную. Но так пусть делают у кого времени вагон. А нам нужен результат, и быстро.

У модуля один только недостаток. Нет описания. То есть его просто нет (на момент написания материала мануал по модулю был пуст). И я спешу хоть немного восполнить пробел

Хоть всё можно подсмотреть в коде, тем не менее попробую дать небольшое описание этому модулю. Без претензий на полноту, только в качестве начального толчка.

Всё начинается с создания объекта.

$image=Image::factory($localfilename);

Указываем имя файла и получаем объект.

Пример наложения водяного знака
=====================================

// Создаём объект
 $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. В качестве аргумента можно указывать только новую ширину. Высота будет подобрана исходя из пропорции.

$result= $image->resize($new_width);

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

$result= $image->crop($width, $height, $offset_x, $offset_y);

Последние два параметра являются необязательными.

Прочие функции
==================================
Вышеперечисленных функций среднему разработчику скорее всего хватит за глаза. Однако в модуле ещё много функций. Достаточно почитать исходник. Они достаточно хорошо описаны. Тут просто приведу список

  • rotate — поворот изображения
  • flip- отражение изображения
  • sharpen - резкость
  • reflection - добавить отражение
  • background - добавить фон
  • save - сохранить результат в файл.

Все эти действия можно делать в разной последовательности. Всё зависит от фантазии.

Пока всё =)