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.