Drupal - Create styled image programmatically

You need to execute createDerivative() on ImageStyle.

$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);

For Drupal 7 there is 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);

This can be achieved with Image Style Warmer module which is available for D8. Worked perfectly for me! This might help other people, who are trying to find a solution.

The Image Style Warmer module provides options to create image styles during upload or via queue worker. So configured image derivates already exists when they are requested.

  • Pre-generate configured image styles on image upload or crop change.
  • Pre-generate configured image styles via queue worker.

Tags:

Media

8