v0.12.0 — cwebp parity for every input, and metadata
Pre-releaseSkidbladnir 0.12.0 — a prerelease of the Tauri app. Installed copies from 0.8.0 on will offer it as an update.
Your conversions now match cwebp, byte for byte
Skidbladnir exists to drive cwebp's full control surface, so its WebP output should be exactly what cwebp writes. For images read from files, it often wasn't. The encoder was right; what differed was how the source image was read:
- JPEG → WebP matched
cwebpin only 17 of 456 tested cases. JPEGs are now decoded with libjpeg-turbo's decoder, ascwebpdecodes them. It now matches in all 456. - WebP → WebP (re-encoding an existing WebP) matched in 84 of 304 cases. It now takes
cwebp's route and matches all 304. - 16-bit TIFF → WebP matched in none of 76. It now matches all 76.
- PNG and 8-bit TIFF already matched. The PNG check now covers every setting.
These results are checked against cwebp itself on Linux and macOS for every change.
There is one deliberate exception. cwebp darkens the semi-transparent pixels of a TIFF with straight (unassociated) alpha. Skidbladnir keeps the colours the file holds.
Keep a photo's colour profile, EXIF and XMP
A new Metadata panel can keep the source's ICC colour profile, EXIF and XMP. All three are off by default, as in cwebp.
Without its profile, a Display P3 or Adobe RGB photo is shown as sRGB and its colours shift.
| Output | What is kept | Checked by |
|---|---|---|
| WebP | ICC, EXIF and XMP, exactly as cwebp -metadata keeps them |
cwebp |
| JPEG XL | ICC (labels the image), EXIF, XMP | libjxl's djxl |
| HEIC | ICC (labels the image), EXIF, XMP | libheif's heif-info |
| AVIF | EXIF only, for now | libavif's avifdec |
Animations and more inputs
- Animated WebP converts to animated WebP with every frame, its timing and loop count, and previews as an animation. Output is byte-identical to libwebp's
img2webpfor every settingimg2webpcan express. - GIF input, still or animated, converts to WebP byte-identically to libwebp's
gif2webp. - AVIF input:
- Tiled (grid) AVIFs, as some cameras write them, now decode whole.
- An AVIF's crop, rotation and mirror are applied, so a sideways-stored portrait converts upright.
- Fixes:
- "Do not enlarge" now applies to animations too.
- Opaque images are written to HEIC without an unnecessary alpha channel.
Known gaps
- Metadata is not yet kept in animations, and AVIF output cannot store a colour profile or XMP yet.
- Animations convert to WebP only. The other formats refuse them by name rather than keeping one frame.
- A target size or PSNR applies to each frame of an animation, not to the whole file.
- The app is not code-signed. The macOS build has never been launched by a person.