The image style system is flexible now. Contrib or custom modules are able to extend it or even replace it with their own implementation. A new interface (ImageStyleInterface
) for image style configuration classes has been defined. Drupal 8 is shipped with ImageStyle
as default class implementation of ImageStyleInterface
. Legacy image style configurations from Drupal 7 were converted into configuration entities (configurables), instances of ImageStyle
.
The image_style_deliver()
was converted into a new download controller ImageStyleDownloadController
being responsible with image derivatives delivery. By extending or overwritting this class you can implement custom permissions on image styles.
Old, procedural, functions were replaced by methods from ImageStyleInterface
interface. Here's a conversion table:
Drupal 7 | ImageStyle | ImageStyleDownloadController |
---|---|---|
image_style_path() |
buildUri() |
- |
image_style_url() |
buildUrl() |
- |
image_style_flush() |
flush() |
- |
image_style_create_derivative() |
createDerivative() |
- |
image_style_transform_dimensions() |
transformDimensions() |
- |
image_style_path_token() |
getPathToken() |
- |
image_style_deliver() |
- | deliver() |
Note: Bolded methods are implementing ImageStyleInterface
.
Find a derivative URI and URL
D7
$original_image = 'public://images/image.jpg';
$uri = image_style_path('thumbnail', $original_image);
$url = image_style_url('thumbnail', $original_image);
D8
$original_image = 'public://images/image.jpg';
// Load the image style configuration entity.
use Drupal\image\Entity\ImageStyle;
$style = ImageStyle::load('thumbnail');
$uri = $style->buildUri($original_image);
$url = $style->buildUrl($original_image);
Create a derivative image programmatically
D7
$original_image = 'public://images/image.jpg';
$destination = image_style_path('thumbnail', $original_image);
image_style_create_derivative('thumbnail', $original_image, $destination);
D8
$original_image = 'public://images/image.jpg';
// Load the image style configuration entity.
$style = ImageStyle::load('thumbnail');
$destination = $style->buildUri($original_image);
$style->createDerivative($original_image, $destination);