There's wp_get_attachment_image_url introduced in WordPress 4.4.0.
It takes these arguments:
- int $attachment_id - Image attachment ID.
- string|array $size - Optional. Image size to retrieve. Accepts any valid image size, or an array of width and height values in pixels (in that order). Default 'thumbnail'.
- bool $icon - Optional. Whether the image should be treated as an icon. Default false.
string (full attachment URL including domain) or
false if no image was found.
$thumbnail = wp_get_attachment_image_url( $attachmentId, 'my-custom-size' );
$original = wp_get_attachment_image_url( $attachmentId, 'full' );
$square = wp_get_attachment_image_url( $attachmentId, [600, 600] );
Image sizes are usually defined in functions.php of your theme. WordPress documentation covers this in depth: Post Thumbnails / Thumbnail Sizes
If an array of two numbers (width and height) is passed into the function, it tries to find the closets matching size while preserving the aspect ratio.
Under the hood it uses image_get_intermediate_size to find the preferred size.