Програмное создание пресета изображения в Drupal и програмный вывод изображения с помощью пресета.

Программное создание стиля изображения

Программное создание стиля происходит практически так же, как и вручную:

  • создаем стиль, задав ему имя
  • добавляем необходимые эффекты

Итак, создаем пресет:

  1. $style = array('name' => 'mypreset_name');
  2. image_style_save($style);

Загружаем созданный пресет и определяем его id:

  1. $style = image_style_load('mypreset_name');
  2. $isid = $style['isid'];

Создаем эффект и сохраняем его:

  1. $effect=array (
  2. 'label' => 'Scale',
  3. 'help' => 'Scaling will maintain the aspect-ratio of the original image. If only a single dimension is specified, the other dimension will be calculated.',
  4. 'effect callback' => 'image_scale_effect', //функция, реализующая данный эффект, см. список ниже
  5. 'form callback' => 'image_scale_form',
  6. 'summary theme' => 'image_scale_summary',
  7. 'module' => 'image',
  8. 'name' => 'image_scale', //имя эффекта, см. список ниже
  9. 'data' =>
  10. 'width' => '300',
  11. 'height' => '',
  12. 'upscale' => 0,
  13. ), //данные, передаваемые колбэку
  14. 'ieid' => NULL,
  15. 'isid' => $isid,
  16. 'weight' => '1',
  17. );
  18.  
  19. image_effect_save($effect);

Таблица колбэков из модуля Image:

Имя функции эффекта Описание
image_crop_effect Обрезает картинку.
image_desaturate_effect Обесцвечивание (преобразование цветов в градацию серого).
image_resize_effect Изменяет размер изображения.
image_rotate_effect Поворачивает изображение.
image_scale_and_crop_effect Меняет размеры и обрезает изображенте.
image_scale_effect Меняет размеры изображения.

Имена эффектов:

  • image_crop - Обрезка
  • image_desaturate - Обесцвечивание
  • image_resize - Изменение размера
  • image_rotate - Вращение
  • image_scale - Масштабирование
  • image_scale_and_crop - Масштабирование и обрезка

Программный вывод стиля изображения

  1. $style = array(
  2. 'style_name' => 'mypreset_name',
  3. 'path' => $path, //путь типа 'public://myimage.jpg'
  4. 'width'=>NULL,
  5. 'height' => NULL
  6. );
  7. $image = theme_image_style($style);