Comment by SmasherEpilepti

24 days ago

Nobody has brought it up yet, but JPEG XL seems to be close in potential and flexibility to OpenEXR. It seems more a competitor to something like that--for use in image processing and digital art pipelines--than something like JPEG, WEBP, or PNG.

That said, I have converted my personal JPEGs to JPEG XL, because you can losslessly convert back and forth between the two for smaller filesize in JPEG XL with no quality loss, so I get free storage savings and can get the byte-for-byte original JPEG back if I need it.

I knew about the lossless JPEG to JPEG XL compression story before, but had no idea that it was a two-way road. That's truly f* impressive. Boggles my mind even more the fact this format hasn't been adopted widely yet.

  • JPEG is a lossy frequency-space compression stage followed by a lossless Huffman coding stage. The second stage is quite generic as such, essentially compressing a stream of bits.

    So you can relatively easily replace the second stage with something better. And since it's lossless you can easily go back.

    Dropbox[1] and others have exploited this for reducing storage requirements, converting back on-demand so the client doesn't notice.

    https://github.com/dropbox/lepton

  • byte-for-byte identical file actually. Not just imagery. You can basically save 30% without loosing ANY bit of the original file

  • Because what you save in terms of storage, you pay for in decode time, which is an important consideration on the web.

    • Do you? I just tried it locally, and decoding a 4.9MB, 6000×4000 JPEG with djpeg took about 400ms; decoding its losslessly-recompressed JXL (4.15MB) single-threaded with djxl took 300ms.

      5 replies →

    • I guess my surprise is mostly that it hasn't been adopted elsewhere. For instance, it still boggles my mind I can't store my JPEG XL images on Google Photos nor take photos as JPEG XL images directly on my Samsung smartphone, but can use HEIC for some fruity reason.

      2 replies →

    • You pay for decoding only when you view the image, whereas storage is a persistent cost.