Edit: here are the wallpapers if you want to try to reproduce my results: https://drive.proton.me/urls/3JQS48SPQR#TmgLx07up1qg. The heic is a container that includes the light and dark variant. I used magick to split it into two PNGs. I then used the PNGs to create the lossless JXLs and AVIFs.

I really like some of Apple’s wallpapers, but use Linux. Since I care about quality, I took Apple’s official wallpapers and have been converting them from heic to more Linux friendly formats.

Originally, I went for JPEG XL. Though there were two issues bothering me. First, the colors of the image noticeably changed when converting to JPEG XL, though that could an issue with the converter (I’ve been using Switcheroo, though I’m not sure which backend it uses). The second issue is that JPEG XL takes longer to load images than other formats.

I then started experimenting with AVIF and had some pretty good results. First, there’s no color change. Second, at least with lossless conversion, AVIF uses significantly less space. AVIF used 15.8MB, JXL used 24.4MB, and PNG used 36.7MB. I’m not sure if it’s faster than JXL since I’m testing on different, much slower hardware at the moment.

AVIF also, seemingly, I’m not 100% sure, supports progressive decoding: https://github.com/AOMediaCodec/libavif/pull/640

  • LeafletOP
    link
    fedilink
    English
    023 days ago

    I also updated the post to include a drive link for the files I generated if you wanted to compare.

    • @[email protected]
      link
      fedilink
      English
      023 days ago

      I played around with the big sur graphic light image. Reduced the size by 50% to make the processing easier, then ran some tests through https://squoosh.app/ I believe squoosh uses an old jxl version, but comparing it with avif in lossless mode, they were both pretty similar in size, with jxl taking a slight lead. I’m not sure why you saw such a big lead for avif on your side. A different image type might show significantly different results though. I think the multicolor gradients (and there is some noise) probably just make it difficult to compress.