Regressive JPEGs

(maurycyz.com)

285 points | by vitaut 5 hours ago

15 comments

  • Yokohiii 8 minutes ago
    Adjacent advice: I've recently played with opengl and jpeg turbo and I wanted to display images fast. I don't remember exact numbers, but enabling progressive for a jpeg was a significant slowdown for decoding. So if anyone like me is stuck with the old school advice that progressive is an nice to have, it's likely not. I personally don't remember any visual progressive image buildup in like decades, so it's not doing anything valuable at all.
  • tda 7 minutes ago
    I wonder if and how you can use this for steganography, hiding data in plain sight. I bet most automated image analysis programs would only consider the final image. I sure some highschooler can use this to bypass their schools contentfilter
  • robbak 1 hour ago
    That is 1. Cursed, and 2. Definitely in the right place here.
    • alterom 43 minutes ago
      This is the stuff that I come here for.
  • cousin_it 2 hours ago
    Nice! I think you can approximate timing somewhat, by making your web server create the "jpeg" on the fly and send it to the client in timed chunks. The source could even be a webcam, so the "jpeg" would go on forever.
    • londons_explore 2 hours ago
      There are already webcams which do this- but they use a mime trick for 'multipart/x-mixed-replace'.

      That's basically the server telling the client 'That data I just sent you, well now replace it with this new thing'.

      No JavaScript needed, and can work with plain http and jpeg

    • SahAssar 38 minutes ago
      A lot of IP cameras already do this via https://en.wikipedia.org/wiki/Motion_JPEG
  • est 35 minutes ago
    > so playback is entirely dependent on network delay

    You can use Service Worker to emulate a slow connection :)

  • vanderZwan 32 minutes ago
    I wonder if you can do this in JPEG-XL. I know that that has actual animation support, but this would be a different thing.
    • cyberrock 19 minutes ago
      The format supports progressive decoding but IIRC none of the current browser implementations support it. The first Chrome and Firefox implementations did, and I think it's on their roadmap for the new Rust implementation. No idea about WebKit/Safari.

      Edit: the format also supports region-of-interest decoding and I suspect you can make some cool maps or fractal images with both features. But I think they're not quite prioritizing implementing that right now.

  • Grimblewald 23 minutes ago
    insanity of content aside, that's a really nice website. Kudos.
  • schobi 2 hours ago
    I tried to think about difficult ways to compute the high frequency coefficients to work from the "wrong" coefficients of the first image...

    But this is clever - just smash them together. Low frequency of one image concatenated with high frequency from another. This works surprisingly well!

  • xnx 2 hours ago
    Excellent hack! Should definitely be possible to make an animated gif to jpeg converter. I guess the animation could be slowed a little by repeating frames.
    • londons_explore 2 hours ago
      You can also deliberately have the server sending data at the right rate for the right playback time.

      Easy enough to add a delay() each frame if your server is python/nodejs/PHP/whatever

  • korbatz 39 minutes ago
    If the online porn industry hasn't used it, it's probably worthless. Still funny, though.
  • LoganDark 56 minutes ago
    Safari just freezes in place until the image is entirely finished downloading.
  • solodynamo 1 hour ago
    hmm interesting
  • ilvez 1 hour ago
    My jaw dropped. Very cool. Thanks for sharing.
  • luciana1u 46 minutes ago
    [dead]
  • Pijuspaul321 55 minutes ago
    Thanks for sharing