web-dev-qa-db-ja.com

プログラムでスタイル付き画像を作成する

カスタムPDFを選択した複数のノードで作成するモジュールがあり、以下の関数を使用してスタイル付き画像へのリンクを作成します:

$file = File::load($img_id);
$imagesPath[] = ImageStyle::load('550x300')->buildUrl($file->uri->value);

残念ながら、画像自体は作成されず、リンクのみが作成されます。Drupalは必要に応じてオンザフライで作成するため、PDF以前に見つからなかった画像PDFが表示される可能性があるため、エラーが発生します。

この画像をプログラムで作成する方法はありますか?

ありがとう。

6
Leeroy521

ImageStyleに対して createDerivative() を実行する必要があります。

_$image_style = ImageStyle::load('550x300');

$file = File::load($img_id);
$image_uri = $file->getFileUri();
$destination_uri = $image_style->buildUri($file->uri->value);
$image_style->createDerivative($image_uri, $destination_uri);
_

Drupal 7の場合 image_style_create_derivative() があります:

_$style = image_style_load('550x300');

$file = file_load($img_id);
$image_uri = $file->uri;
$destination = image_style_path($style['name'], $image_uri);
image_style_create_derivative($style, $image_uri, $destination);
_
12
quex

これは、D8で使用可能な Image Style Warmer モジュールで実現できます。私には完璧に働きました!これは、解決策を見つけようとしている他の人々を助けるかもしれません。

Image Style Warmerモジュールは、アップロード中またはキューワーカーを介して画像スタイルを作成するオプションを提供します。そのため、構成されたイメージ派生物は、要求されたときにすでに存在しています。

  • 画像のアップロードまたは切り取りの変更時に構成済みの画像スタイルを事前に生成します。
  • キューワーカーを介して構成済みの画像スタイルを事前に生成します。
3
Nicky