Files
nextcloud-server-mirror/tests/data/testimage.avif
skjnldsv 3210784b7e feat(preview): generate previews for AVIF images
libgd reads AVIF wherever the distribution built it against libavif, and
exif_imagetype() has reported IMAGETYPE_AVIF since PHP 8.2, below the 8.3
this server requires. Both were missing from OC\Image, so an AVIF had no
thumbnail anywhere: the Files grid showed a generic icon for a photo.

The provider is enabled by default alongside the other formats libgd
reads, and guarded by imagetypes() the way WebP is, so a build without
libavif logs and falls through rather than failing.

Imaginary is deliberately left alone. The shipped aio-imaginary answers
406 Unsupported media type for an AVIF while handling HEIC from the same
container, so routing AVIF to it would replace a working preview with a
failing one.

Writing is added beside reading. An image loaded as AVIF would otherwise
fall to the default branch of the output switch and be written as a PNG
under whatever name the caller chose.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2026-09-18 13:53:34 +02:00

15 KiB