Styled image url in Drupal 8

Let's suppose that $article is a node with an image field named field_image.

How to get the styled image url

First we need to get the image file uri.

$img_uri = $article->field_image->entity->getFileUri();

Next we need to get the style object we want to apply to the image. Let's assume that the machine name of the style we want to apply is thumbnail. Here is how you get the thumbnail style object.

$style = \Drupal::entityTypeManager()->getStorage('image_style')->load('thumbnail');

Finally, we can get the url of the style image like so.

$img_url = $style->buildUrl($img_uri);

How to get the styled image render array

Alternatively, you can get the render array of the styled image like this.

$render = [
    '#theme' => 'image_style',
    '#style_name' => 'thumbnail',
    '#uri' => $img_uri,
];
Tags