2015-06-22 2 views
1

Можно ли изменять размер изображений «на лету» и кэшировать результат с помощью Drupal?Drupal изменить размер изображения на лету

У меня есть несколько больших изображений (например, 2000x2000px), и я хочу показать предварительный просмотр, например. 100x100px.

Я знаю, что есть функция theme_image_style. Но он позволяет создавать только <img> с нужным размером и не изменять размер изображения.

Я смотрю модули/images/image.admin.inc, и они использовали функцию [image_style_create_derivative][2].

ответ

2

Да, вы должны использовать стили изображения Drupal (Конфигурация -> Мультимедиа -> Стили изображения). Там вы должны создать свой стиль.

Затем, на переднем конце, когда вы хотите, чтобы отобразить изображение с этим стилем (в этой резолюции), вы можете использовать image_style_url функцию():

https://api.drupal.org/api/drupal/modules!image!image.module/function/image_style_url/7

Он принимает 2 параметра - один является имя машины стиля изображения и другое - это URI изображения, который вы можете получить, если распечатываете все свойства поля изображения.

Вы также можете выбрать стили изображений из внешнего интерфейса ... т. Е. при создании представления для некоторого изображения вы можете выбрать для отображения в определенном стиле изображения.

В обоих случаях эти стили изображений генерируются при первом использовании изображения.

+0

Спасибо, что ответили на меня. Знаете ли вы решение без использования Drupal Backend? Только с помощью PHP. – Charles

+0

Вы можете сделать это самостоятельно, используя библиотеки обработки изображений PHP, такие как библиотека GD или магия изображения. – MilanG

1

В ответ на ваш комментарий к MilanG, использование image_style_url() - лучший вариант на бэкэнд. Существует также

https://www.drupal.org/project/resp_img

, который может быть что-то стоит посмотреть в. С точки зрения UX вы не хотите, чтобы пользователь загружал изображение 2000x2000 px каждый раз при загрузке страницы. Независимо от выведенного размера изображение все равно будет отображаться как изображение размером 2000x2000 пикселей с большим размером. image_style_url() или используя стили изображений в графическом интерфейсе, создайте новый файл, который будет загружаться намного быстрее и является предпочтительным методом.

Смежные вопросы