web-dev-qa-db-fra.com

Comment générer automatiquement des styles d'image?

Comment générer automatiquement différents styles d'image dans Drupal 8, pour les images existantes?

Par exemple, j'ai environ 10 000 images dans le champ field_image. Je voudrais générer des vignettes en utilisant mon style d'image miniature pour ces images.

4
Nicky

Les dérivés d'images seront générés automatiquement une fois demandés et non encore existants.

Mais si vous demandez comment créer par programmation l'extraction de dérivés d'images ImageStyle::createDerivative .

Voici un exemple d'extrait où j'ai fait exactement cela:

$field_name = 'field_my_image';
$image_style_name = 'my_image_style';
$image = [];

// Get the original image URI.
$original_image = $node->{$field_name}->entity->getFileUri();

// Load the image style.
$style = \Drupal::entityTypeManager()
  ->getStorage('image_style')
  ->load($image_style_name);

// Get the styled image derivative.
$destination = $style->buildUri($original_image);

// If the derivative doesn't exist yet (as the image style may have been
// added post launch), create it.
if (!file_exists($destination)) {
  $style->createDerivative($original_image, $destination);
}

// Do whatever else you need to do.
$image['url'] = file_url_transform_relative($style->buildUrl($original_image));
$properties = $node->{$field_name}->first()->getValue();
$image['alt'] = $properties['alt'];
$image['title'] = $properties['title'];
5
leymannx