Програмне створення стиля зображень в Drupal 7
Надіслано Animan в Срд, 2016/10/12 - 18:44
Сьогодні я вирішив розповісти як програмно створити стиль зображення, а також як додати ефекти до стилів які йдуть по замовчуванню в Drupal. Також всі редагування можна зробити через адмінку /admin/config/media/image-styles.
Для першого прикладу нам знадобиться хук hook_image_default_styles.
В ньому ми змаштабуємо зображення до розмірів 350х280:
<?php /** * Implements hook_image_default_styles(). */ function my_module_image_default_styles() { 'label' => 'Custom style (350x280)', 'name' => 'image_scale', 'width' => 350, 'height' => 280, 'upscale' => 1 // Якщо встановлено 1, то зображення яке є меншим за вказані розміри буде збільшене ), 'weight' => 0, ), ), ); return $styles; }
Обріжемо зображення до відповідного розміру 320х250 і знебарвимо його:
<?php function my_module_image_default_styles() { 'label' => 'Crop style (320x250)', 'name' => 'image_crop', 'width' => 320, 'height' => 250, ), 'weight' => 0, ), 'name' => 'image_desaturate', 'weight' => 1, ), ), ); return $styles; }
Тепер змінимо розмір і перевернемо зображення на 90 градусів:
<?php function my_module_image_default_styles() { 'label' => 'Resize style (600x300)', 'name' => 'image_resize', 'width' => 600, 'height' => 300, ), 'weight' => 0, ), 'name' => 'image_rotate', 'degrees' => 90, ), 'weight' => 1, ), ), ); return $styles; }
І на останок масштабуємо і обріжемо (такий варіант є найбільш оптимальним оскільки зображення не будуть розтягуватись і збережуть нормальні співвідношення сторін):
<?php function my_module_image_default_styles() { 'label' => 'Scale and crop style (600x300)', 'name' => 'image_scale_and_crop', 'width' => 600, 'height' => 300, ), 'weight' => 0, ), ), ); return $styles; }
Машинна назва | Опис ефекту |
---|---|
image_scale | масштабувати зображення |
image_crop | обрізати зображення до відповідного розміру |
image_rotate | обернути зображення |
image_desaturate | знебарвити зображення |
image_scale_and_crop | масштабувати і обрізати |
image_resize | змінити розмір зображення |
Оригінал зображень взятий з модуля Image, переглянути можна тут.
Якщо ж ви не хочете писати свій модуль, а користуєтесь, наприклад, Devel'ом в якому можна просто виконати код. Або вам потрібно перезаписати ефекти стандартних стилів, таких як Large (480x480), Medium (220x220), Thumbnail (100x100) то для цього вам потрібно в файлі my_module.install використовуючи hook_install() написати код:
// Set effect image on default image style 'name' => 'medium', 'label' => 'Medium (220x220)', )); 'name' => 'image_scale_and_crop', 'label' => t('Image scale and crop'), 'width' => 220, 'height' => 220, ), 'weight' => 0, 'effect callback' => 'image_scale_and_crop_effect', 'isid' => $style_image['m']['isid'], ); 'name' => 'large', 'label' => 'Large (480x480)', )); 'name' => 'image_scale_and_crop', 'label' => t('Image scale and crop'), 'width' => 480, 'height' => 480, ), 'weight' => 0, 'effect callback' => 'image_scale_and_crop_effect', 'isid' => $style_image['l']['isid'], ); foreach ($effects as $effect) { image_effect_save($effect); }
Цей код переписує ефекти за промовчуванням для стилів Large і Medium. Для того щоб створити свої стилі потрібно змінити масив в функції image_style_save().
Як видалити програмно стиль зображення:
image_style_delete(image_style_load('image_style')); // image_style - це машинне ім’я стилю
Мітки:
Останні коментарі