Рейтинг:-1

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

флаг us

Я создаю свой собственный модуль, и мне нужно программно создать стиль изображения для использования с новым типом мультимедиа.

я нашел ядро/профиль/стандарт/конфигурация/дополнительно/image.style.max_1300x1300.yml файл, содержание которого следующее.

имя: max_1300x1300
ярлык: "Макс. 1300 x 1300"
последствия:
  04caae9a-fa3e-4ea6-ae09-9c26aec7d308:
    идентификатор: image_scale
    данные:
      ширина: 1300
      высота: 1300
      высококлассный: ложь
    вес: 1
    UUID: 04caae9a-fa3e-4ea6-ae09-9c26aec7d308
код языка: en
зависимости:
  модуль:
    - отзывчивое_изображение
  принудительно:
    модуль:
      - отзывчивое_изображение

Я так понимаю, мне нужно создать файл в config/install с именем image.style.<image_style_id>.yml, с этими атрибутами.

Какие значения UUID следует использовать?

Kevin avatar
флаг in
Это в админке в настройках.
флаг us
@Кевин, спасибо, но это не мой вопрос, я не хочу использовать пользовательский интерфейс.
Kevin avatar
флаг in
Писать yaml вручную бессмысленно. Сделайте их в пользовательском интерфейсе и экспортируйте.
Рейтинг:0
флаг in

Отвечая на этот вопрос, я предполагаю, что вы создали свою конфигурацию через пользовательский интерфейс, а затем экспортировали ее, как упомянул Кевин в своем комментарии. Это лучший способ создать начальную конфигурацию для включения в ваш проект.

Обратите внимание, что все примеры показаны с использованием процедурного кода для простоты; обязательно следуйте рекомендациям и внедряйте свои услуги при создании проекта.


Сущность ImageStyle

После того, как этот файл конфигурации установлен, он становится Стиль изображения объект конфигурации, и им можно манипулировать как любым объектом конфигурации.

// Получить обработчик хранилища для сущностей ImageStyle.
$image_style_storage = \Drupal::entityTypeManager()->getStorage("image_style");
// Получаем экземпляр нашей сущности ImageStyle.
$my_image_style = $image_style_storage->load("my_image_style");

Эффекты, указанные в определении ImageStyle, являются подключаемыми модулями, управляемыми plugin.manager.image.effect служба менеджера плагинов.

Как назло, Стиль изображения организация предлагает добавитьэффект изображения() общедоступный метод, который принимает массив информации об эффектах. Этот метод на самом деле заботится о создании и назначении UUID, который затем возвращается вам.

общедоступная функция addImageEffect (массив $ конфигурации) {
    $configuration['uuid'] = $this->uuidGenerator()->generate();
    $this->getEffects()->addInstanceId($configuration['uuid'], $configuration);
    вернуть $configuration['uuid'];
  }

Итак, с помощью вашего image.style.max_1300x1300 Например, назначение эффекта изображения будет выглядеть так:

$effect_uuid = $my_image_style->addImageEffect([
  'id' => 'масштаб_изображения',
  'данные' => [
      'ширина' => '1300',
      'высота' => '1300',
      'высококлассный' => ЛОЖЬ,
   ],
   'вес' => 1,
]);

Вы можете найти все графические эффекты, зарегистрированные на вашем сайте, выполнив: \Drupal::service('plugin.manager.image.effect')->getDefinitions();

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.