Image

Image Resize Variants

Typed image definitions generate deterministic variants and reuse their cached output on later requests.

Original

Source landscape
Dimensions
1536 × 1024
Output format
PNG
Background
Source pixels

256 × 256 · Center cover

256 × 256 · Center cover
Dimensions
256 × 256
Mode
Center cover
Scale policy
Downscale only
Output format
WEBP
Background
Transparent

800 × 450 · Contain full image

800 × 450 · Contain full image
Dimensions
800 × 450
Mode
Contain
Scale policy
Downscale only
Output format
WEBP
Background
#172033
image/resize.php
<?php

use Lemonade\Framework\Image\ImageViewOptions;
use Lemonade\Framework\Image\Value\ImageAsset;
use Lemonade\Framework\Image\Value\ImageBackground;
use Lemonade\Framework\Image\Value\ImageDimensions;
use Lemonade\Framework\Image\Value\ImageFormat;
use Lemonade\Framework\Image\Value\ImageQuality;
use Lemonade\Framework\Image\Value\ImageOriginalReference;
use Lemonade\Framework\Image\Value\ImageOriginalStorage;
use Lemonade\Framework\Image\Value\ImageScalePolicy;
use Lemonade\Framework\Image\Value\ImageVariantDefinition;
use Lemonade\Framework\Image\Value\ImageVariantMode;

$original = new ImageOriginalReference(
    storage: ImageOriginalStorage::Upload,
    relativePath: 'examples/image/source-landscape.png',
    sourceVersion: 'landscapev1',
    format: ImageFormat::Png,
    dimensions: new ImageDimensions(1536, 1024),
);
$asset = new ImageAsset('example_landscape', $original);

$cover = new ImageVariantDefinition(
    dimensions: new ImageDimensions(256, 256),
    format: ImageFormat::Webp,
    quality: ImageQuality::fromInt(82),
    background: ImageBackground::transparent(),
    mode: ImageVariantMode::CenterCover,
    scalePolicy: ImageScalePolicy::DownscaleOnly,
);

$contain = new ImageVariantDefinition(
    dimensions: new ImageDimensions(800, 450),
    format: ImageFormat::Webp,
    quality: ImageQuality::fromInt(82),
    background: ImageBackground::color('#172033'),
    mode: ImageVariantMode::Contain,
    scalePolicy: ImageScalePolicy::DownscaleOnly,
);

$coverReference = $variants->generate($asset, $cover);
$containReference = $variants->generate($asset, $contain);

echo $helpers->image($coverReference, new ImageViewOptions(alt: 'Center-cover landscape'));