
Magic PNG Thumbnails - trishume
http://thume.ca/projects/2012/11/14/magic-png-files/
======
martin-adams
I saw an excellent use of this recently here:

[https://mobile.twitter.com/SciencePorn/status/63454773027106...](https://mobile.twitter.com/SciencePorn/status/634547730271064064?s=09)

~~~
1ris
I see no difference.

~~~
thekevan
Try the non-mobile link:
[https://twitter.com/SciencePorn/status/634547730271064064](https://twitter.com/SciencePorn/status/634547730271064064)

------
pygy_
Could someone explain why this image is flickering on my MacBook Air screen?

[http://thume.ca/assets/postassets/doubleVision/out.png](http://thume.ca/assets/postassets/doubleVision/out.png)

Especially "ze first" image as seen in FF and Chrome.

I suppose it is related to how monitors use temporal dithering to fake 24 bit
colors when they really have 18 bits per pixel, but why is it more apparent on
this kind of picture?

Is it a perceptual issue or a technical one?

It is also apparent when using Windows XP under virtualization. Some windows
have checkerboard patterns that flicker.

~~~
sp332
Here's a page with a test and a potential explanation
[http://www.lagom.nl/lcd-test/inversion.php](http://www.lagom.nl/lcd-
test/inversion.php)

~~~
userbinator
More detailed explanations:

[http://www.mvkonnik.info/2009/04/brief-note-about-lcd-
displa...](http://www.mvkonnik.info/2009/04/brief-note-about-lcd-
displays.html)

[http://www.solomon-
systech.com/files/ck/files/Application%20...](http://www.solomon-
systech.com/files/ck/files/Application%20Notes/TFT%20Flickering%20Application%20Note_1.1.pdf)

tl;dr: the liquid crystals in LCDs need to be driven with AC voltage to
prevent electrolysis degradation. This is known as "inversion" and there are
different patterns used. If the magnitude of the + voltage is different from
the - voltage, i.e. the "common" voltage Vcom is not exactly in the middle,
the subpixels change brightness slightly on each cycle and this causes
flicker. The flickering becomes much more noticeable if the pattern displayed
in the image matches the inversion pattern.

Neither of my (nearly 10 years old now... but still working well) LCD monitors
flicker on all the images, so this is something that shouldn't be occurring on
a good monitor. I suppose manufacturers now are relaxing the tolerances to
save cost, justifying it by the fact that flickering is not observable on
"most" (debatable) content.

------
danso
Someone needs to apply this to the photo of the white-gold/blue-black dress
image to really fuck with the Internet.

------
thedufer
I saw someone do something similar in ye olde days of Gravatar. It abused
their resizing algorithm to get different images at different scales. It was
very simple (and probably couldn't have worked if it was much more
complicated) - just the text `i++` on a noisy background. But when scaled it
turned into `i--`. In both cases, it was very readable.

------
TorKlingberg
It is really an unfortunate over-engineering in the PNG format to include
gamma correction. So many problems would have been avoided if PNGs just stored
RGB values and let the renderer/OS/driver/screen decide how to display it.
Trying to do gamma correction based on various guesses about screens just lead
to jarring color inconsistencies.

Here is great article about it. It is a few years old, so some of the problems
are fixed now. [https://hsivonen.fi/png-gamma/](https://hsivonen.fi/png-
gamma/)

------
est
Anyone else remember an old libpng hack that distinguish IE, Firefox and
WinXP? exact one PNG file, viewed differently on each.

Sorry my Google-fu failed and I can't find the link.

~~~
geographomics
Not exactly what you mentioned, but reminded me of this:
[https://www.reddit.com/r/glitch_art/comments/1buu5k/this_jpe...](https://www.reddit.com/r/glitch_art/comments/1buu5k/this_jpeg_glitches_differently_in_each_web/)

------
qnaal
as seen on 4chan

~~~
userbinator
I also saw it on 4chan first, a long time ago, but I'd bet this trick has been
around for many years before that. The gamma of 0.023 also seems to have been
the de-facto way to do this.

Here's a good illustration that shows how the pixel values of the 2 images
have been "compressed" into two separate ranges:

[https://archive.rebeccablacktech.com/boards/g/img/0244/57/13...](https://archive.rebeccablacktech.com/boards/g/img/0244/57/1335397543121.jpg)

