Save PNG compressed, WebP at effort 4 and AVIF at effort 1 (closes #232)
check / check (push) Waiting to run

Each output format now has its own govips export with its settings
named, in place of govips' generic Export, which sent libvips a zero for
some settings it was not given: PNG had no compression and WebP effort
0. PNG now gets libvips' default compression, 6, and WebP its default
effort, 4. GIF was already at libvips' default effort, and JPEG output
is unchanged.

AVIF was at libvips' default effort, 4, which takes minutes for an
8192x8192 image with one libvips thread, far past the default
downstream_timeout; effort 1 takes about 12 seconds. A 16-bit source,
which libvips would save with 12 bits per sample, gets 8: at effort 1,
12 bits take about 54 seconds.

Model: opus-5-5
This commit is contained in:
2026-10-08 10:36:45 +00:00
committed by sneak
parent 8597253ffd
commit b9c618e551
3 changed files with 241 additions and 28 deletions
+12
View File
@@ -30,6 +30,18 @@ P2: security: per-IP rate limiting on the image routes
# Completed Steps
- 2026-10-08 every output format is saved with settings pixa sets on purpose
(closes #232): each format has its own govips export, as JPEG XL does, in
place of govips' generic `Export`, which sent libvips a zero for some settings
it was not given. PNG gets libvips' default compression, 6, where it had none,
and WebP libvips' default effort, 4, where it had 0. GIF was already at
libvips' default effort, 7, and JPEG output is unchanged. AVIF is saved at
effort 1, where it had libvips' default, 4: with one libvips thread, an
8192x8192 image takes minutes at 4, far past the default `downstream_timeout`,
and about 12 seconds at 1. AVIF is also saved with 8 bits per sample from a
16-bit source, which libvips would save with 12: a 16-bit 8192x8192 image
takes about 54 seconds at effort 1 with 12 bits, nearly all of the default
`downstream_timeout`, and about 12 with 8.
- 2026-10-08 JPEG XL as an input and output format (part of #222): a source
whose bytes start with either JPEG XL signature, the bare codestream's `FF 0A`
or the container's, is detected as `image/jxl`, which the upstream fetch