web-dev-qa-db-ja.com

移行した画像に画像スタイルを適用する

drupalからdrupal 6からdrupal 8.に移行しました。8。移行されたイメージには適用されません。

画像スタイルは、新しく追加された画像に適用されます。

移行した画像の画像スタイルを生成するには、強制的にdrupalが必要だと思いますが、方法がわかりません。

感謝されている助け。

PS。 drupal 7で画像スタイルのフラッシュに関するいくつかの情報を読みましたが、カスタムモジュールとしてdrupal 8でそれを使用する適切な方法が見つかりませんでした。

この問題を解決するために、以下のコードを使用してDrupalでノードの画像スタイルを作成しました:

if ($entity->hasField('field_image') && $entity->get('field_image')->getValue() != null) {
  $image = \Drupal::service('image.factory')->get($entity->get('field_image')->entity->getFileUri());
  if ($image->isValid()) {
    $styles = \Drupal::entityTypeManager()->getStorage('image_style')->loadMultiple();
    $image_uri = $entity->get('field_image')->entity->getFileUri();
    foreach ($styles as $style) {
      $destination = $style->buildUri($image_uri);
      $style->createDerivative($image_uri, $destination);
    }
  }
}

これは、各ノード($ entity変数)の説明です。最初に、ノードタイプにマシン名「field_image」のフィールドがあるかどうかを確認し、このフィールドに値がある場合は、fileUriが有効なイメージかどうかを確認します。すべての条件が満たされた場合、コードは使用可能なすべての画像スタイルで反復し、指定された画像のそのスタイルを手動で構築します。

このコードはcronジョブ関数として使用できるため、指定されたノードのすべてのcronジョブイメージスタイルが作成されます。