Post

firefox is shipping JXL so i thought i'd take a look at the state of things, at least for my own system i'm using this image since it has all of: large areas of similar color; fine details (the lineart uses a very noisy brush); and an alpha channel (notoriously hard for png). but mostly bc lexy

PNG, WEBP, AVIF, and JXL all preview in kde dolphin no problem. gimp and imagemagick both appear fully capable of reading and writing all of them. so JXL is basically native already. windows users idk what to tell you, maybe in 2050 meanwhile bluesky has of course already trashed the image

0 reposts35 likes

PNG: gimp, max compression — 369k (reference size) imagemagick, default — 376k (−2% smaller) imagemagick, -quality 96 or 100 — 369k (0% smaller) optipng, -o9 — 359k (3% smaller)

WebP, all using the "drawing" mode: gimp, lossless — 223k (40% smaller) imagemagick, lossless, max compression — 212k (43% smaller) i'm not sure how to rate lossy compression since it's obviously very subjective, so i guess i will just give my impressions. only tried a couple variations

WebP cont'd: gimp, quality 100% — 110k (70% smaller) exactly identical to "lossless", which is sensible for 100% quality, but then how is it half the size?? gimp, quality 98% — 101k (73% smaller) looks the same at 1:1. slightly smooths the mane, shuffles the lineart noise. minimal savings though

WebP cont'd: imagemagick, default — 39k (90% smaller) this is of course visibly worse even at 1:1, though it's not nearly as worse as i expected. basically jpegifies areas of high contrast, though the noise is surprisingly well constrained. this is why every website saves as webp lol

"How is it half the size" presumably because it has large blocks of a single color, and listing the size and location of such a block, along with defining that color once, is a lot faster than saying the exact same color repeatedly for every pixel (which is how an uncompressed .bmp does it)

Also yeah bluesky itself botched the image (the appview upload does that) but the CDN itself supports JXL natively and if you upload the JXL file directly to your PDS instead then the CDN will serve it and apps that request in JXL format will get the original (otherwise it converts).

So I figured you might find this little bit of follow up testing interesting

Missino@onedeuxtriseigo.nullpo.dev

So I did an experiment. QRTed below are two test images uploaded as JPEG XL. They will show up as normal JPEGs or Webp on bluesky but you should be able to access the underlying JXLs still.