Imagecache: динамические действия над изображениями

Изображение пользователя andyceo.

ImageCache является модулем, который позволяет делать альтернативные изображения разных размеров от одного и того же исходного изображения. Он требует, чтобы в php присутствовала библиотека манипуляции изображениями, например библиотека GD2 или ImageMagick, и требует, чтобы чистые ссылки (ЧПУ) были включены. Вы можете использовать imagecache с любым изображением, загруженным в Drupal, поэтому вы можете использовать его с модулем Image также хорошо, как и с изображениями, загруженными с использованием модуля Upload, но наиболее распространённым способом является использование его с модулями CCK и Imagefield.

Вы можете посмотреть видеоурок, посвящённый использованию Imagefield и ImageCache.

Одним полезным примером является сайт какого-либо сообщества с большим числом пользователей. Пользователи могут загрузить аватарку (юзерпик) размером, например, в 240 квадратных пикселей. Это может прекрасно смотреться на странице профиля пользователя, но, скажем, вы хотите сделать некоторые списки пользователей в конкретных группах - картинка 240 х 240 пикселей, может быть слишком велика для такого списка из десятков людей. На этих списках вы можете захотеть сделать фотографии меньше - 120 х 120 пикселей, например. ImageCache даёт вам способ сделать это без необходимости вручную изменять размер каждого изображения.

Еще один пример, который мы собираемся подробно продемонстрировать, это когда вы хотите уменьшить масштаб изображения в тизере, и показать его в полный размер при просмотре всего документа. Прежде чем продолжить, убедитесь, что у вас установлены и включены модули ImageCache, CCK и Imagefield. Кроме того, создайте тип контента, с полем Imagefield, в котором вы поместите изменяемое изображение. Если Вы хотите просто изменить шаблон вручную, чтобы изменить размер изображения, то прокрутите эту страницу вниз до конца.

Во-первых, войдите в Администрирование -> Конфигурация сайта -> Image cache (Administer -> Site Configuration -> Image cache). Потом назовите новый набор предустановок: например, "small" (без кавычек) и нажмите кнопку "Создать набор" ('Create preset').

Шаг 1. (англ.)

Затем выберите действие: масштабировать (scale), изменить размер (resize), или кадрировать (crop). Масштабирование работает хорошо, если вы хотите сохранить пропорции, в этом случае вам всего лишь нужно ввести одно из измерений (ширину или высоту). Изменение размера позволит вам генерировать изображения любого произвольного размера, даже если это приведёт к искажению изображения. Кадрирование позволяет отобразить только нужную часть изображения, я буду использовать логотип Drupal в качестве примера:

Масштабировано до 50%:

Масштабирование

Размер изменён на 60x20 пикселей:

Изменение размера

Кадрировано до 50%x50%, оба смещения установлены вверх:

Кадрирование

Для этого примера, масштабирования будет достаточно, так что выберети его и нажмите на кнопку "Обновить набор" ('Update preset'):

Шаг 2. (англ.)

После этого, дайте набору ширину и высоту, вы можете использовать проценты, чтобы получить относительные размеры от размеров исходного изображения, или введите абсолютную величину в пикселях. В первом примере примере мы будем использовать 50% или 120 чтобы сделать изображение размером 120 квадратных пикселя. Второй пример более общий, и вы, возможно, в нём будете иметь дело с изображениями различных размеров, поэтому лучшим выбором будет указать максимальное значение для ширины и высоты изображения в тизере.

Давайте предположим, что вы хотите масштабировать изображение максимум до размеров 48x48. Для этого нужно просто заполнить поля ширины и высоты, и установить масштабирование так, чтобы оно происходило по максимальному измерению, если только вас не волнует, если одно из измерений может в конечном итоге оказаться больше заданного значения. Не забудьте нажать на кнопку "Обновить набор" ('Update preset') после установления необходимого значения.

Шаг 3. (англ.)

Теперь, после того, как мы успешно создали наши предустановленные имена, нам необходимо изменить желаемое CCK-поле, чтобы автоматически изменять размер изображения. Чтобы добиться этого, сначала перейдите в Администрирование -> Управление Содержанием -> Типы Контента (Administer -> Content Management -> Content Types). После этого нажмите на ссылку для настройки того типа контента, который содержит поле, которое вы хотите настроить.

Шаг 4. (англ.)

Затем просто выберите "Отображать поля" ("Display fields") и установите для Тизера (Teaser) желаемые предустановки и нажмите "Добавить" ('Submit') (в данном случае "small", но также можно изменить настройки для полного вида (Full), если вы хотите, чтобы изображения всегда изменялись, даже при просмотре полного содержания):

Шаг 5. (англ.)

Вуаля, теперь все изображения в поле "testimage" будут автоматически сокращены до размеров 48x48. Ниже приводится конечный результат.

Предварительный просмотр (он же Тизер, Teaser):

Предварительный просмотр (Teaser)

Полный вид (Full view):

Полный вид документа

Если вы хотите добавить изображение вручную и применить к нему какие-либо предустановки ImageCache, то вам нужно добавить фрагмент кода к желаемому .tpl.php-файлу:

<?php
print theme('imagecache', $preset, $image['filepath'], $alt, $title$attributes);
?>

Ниже приведен пример, в котором я вручную вызвал ImageCache, используя предустановки "small" и печатая файл test.jpg, расположенный в корне установочного каталога Drupal (путь к изображению должен всегда указываться относительно корня). Текст в атрибуте "alt" отображается, когда изображение не может быть показано, в то же время содержание атрибута title будет отображено в виде подсказки.

<?php
print theme('imagecache', 'small', 'test.jpg', 'just a test image', 'test image');
?>

($alt, $title, $attributes являются необязательными, $attributes намеренно опущен в примере, так как это не очень часто используемый параметр).

Источник: Imagecache: dynamic image manipulation

Добавьте страницу в закладки. Перейти к верху страницы
Синдикация материалов