web-dev-qa-db-ja.com

画像のスタイルを自動的に生成するにはどうすればよいですか?

Drupal 8で、既存の画像に対して異なる画像スタイルを自動的に生成するにはどうすればよいですか?

たとえば、field_imageフィールドには約10Kの画像があります。これらの画像のサムネイル画像スタイルを使用してサムネイルを生成したいと思います。

4
Nicky

画像派生物は、要求されると自動的に生成され、まだ存在しません。

しかし、プログラムでイメージデリバティブのチェックアウトを作成する方法を尋ねている場合 ImageStyle::createDerivative

ここに私が正確に行ったサンプルスニペットがあります:

$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