Image file formats

Using the picture element

The picture element can be used with the format-<type> image operation to specify different image formats and let the browser choose the one it prefers. For example:

{% load wagtailimages_tags %}

<picture>
    {% image myimage width-1000 format-avif as image_avif %}
    <source srcset="{{ image_avif.url }}" type="image/avif">

    {% image myimage width-1000 format-webp as image_webp %}
    <source srcset="{{ image_webp.url }}" type="image/webp">

    {% image myimage width-1000 format-png as image_png %}
    <source srcset="{{ image_png.url }}" type="image/png">

    {% image myimage width-1000 format-png %}
</picture>

Customising output formats

By default, all avif, bmp and webp images are converted to the png format when no image output format is given.

The default conversion mapping can be changed by setting the WAGTAILIMAGES_FORMAT_CONVERSIONS to a dictionary, which maps the input type to an output type.

For example:

    WAGTAILIMAGES_FORMAT_CONVERSIONS = {
        'avif': 'avif',
        'bmp': 'jpeg',
        'webp': 'webp',
    }

will convert bmp images to jpeg and disable the default avif and webp to png conversion.