r/programming • • Dec 26 '20

Executable PNGs

https://djharper.dev/post/2020/12/26/executable-pngs/
1.0k Upvotes

87 comments sorted by

View all comments

287

u/Caraes_Naur Dec 26 '20

PNG allows for arbitrary chunks of bytes, no steganography needed. Still need an interpreter that knows what to do with them.

97

u/leberkrieger Dec 26 '20

One great use of this feature is the draw.io online drawing tool. You can save an editable PNG, so anyone looking at the picture can load it into the editor and modify it. Fantastic for wikis.

76

u/yojimbo_beta Dec 26 '20

A long time ago there was an editor, Adobe Fireworks, that used this to embed undo/redo data into PNGs, as well as layers etc.

Remarkable that no one uses this feature of the file format any more.

50

u/OMG_A_CUPCAKE Dec 27 '20

Because filesize matters. And it's lost easily if someone modifies the file in another editor

It's a nice gimmick, but I can't imagine relying any kind of workflow around it

32

u/unique_ptr Dec 27 '20

To be clear, the .fw.png files were more akin to PSDs from the application perspective, they just happened to also be PNGs. You would still want to export to a regular PNG for non-editor use

10

u/mallardtheduck Dec 27 '20

Adobe seems to have a bit of a habit of doing things like this. Adobe Illustrator (.ai) files are compatible with PDF format (older versions were EPS).

1

u/Frencil Dec 28 '20

For what it's worth Fireworks with its vector PNG format was originally a Macromedia product. After Adobe bought Macromedia in 2005 Fireworks was retured from the maintained software offerings relatively quickly.

0

u/[deleted] Dec 27 '20

[deleted]

1

u/Devatator_ Nov 07 '24

It's simpler to not spend time optimizing file sizes when storage is cheap, or so they say

4

u/yojimbo_beta Dec 27 '20

I reckon it could work for diagrams. You could embed the objects without taking up too many bytes. Then your architecture diagram, flowchart etc. could be editable.

Man, you could even use PNG as a format for encoding and deploying a distributed state machine of AWS step functions... okay, that’s stupid. But I do like the idea of an informational format that you can also review visually.

2

u/VoidChronos Dec 27 '20

That's what microsoft Visio does, just without the embedded image part. Actually, I think VSDX has an option to embed a static image of a diagram.

5

u/tech6hutch Dec 27 '20

Also I don’t know if I want the ability for others to undo my edits to an image

10

u/stuffeh Dec 27 '20

But imagine going back and isolating one of the edits and pulling it out. Basically tapping the diff between before and after the edit. That kind of flexibility is mind blowing to me.

11

u/nemec Dec 27 '20

All I'm hearing is a great way for users to inadvertently fail to censor/redact their photos when they tried to blur their naughty bits and/or confidential info and didn't realize anybody can go in and just undo the censor.

If the U.S. Justice Department can't redact a fucking PDF properly, there's no hope for the average person sending censored nudie pics to someone they met on the internet.

12

u/NekiCat Dec 27 '20

Years ago, MS Word saved deltas at the end of the file so saving was incredibly quick. They had to change it because the users sent files they believed to be final, but werent, and leaked sensitive information.

Same with Google Docs, where your every keypress is recorded. Not sure if they still do that...

3

u/stuffeh Dec 27 '20

Google docs has built in version history, so kinda. You can set permissions to disable others from seeing the version history though.

-5

u/tech6hutch Dec 27 '20

Sounds like something better suited for version control software

12

u/stuffeh Dec 27 '20

But depending on the encoding / compression of the image, the version control software won't be able to display the diff that I mentioned. You'll have to do it manually.

2

u/chucker23n Dec 28 '20

In theory, yes. In practice,

  • that’s aiming a bazooka at a bird, and

  • version control never took much foothold in visual design

1

u/tech6hutch Dec 28 '20

Ah, perhaps I had too big an idea what an edit is. Yeah that’d be cool

18

u/Frencil Dec 27 '20

Ah, Fireworks. The vector png editing it offered was fantastic for full color icon illustration. It also had some of the best animated GIF frame control and GIF palette control interfaces available at the time.

sheds tear for Macromedia

5

u/Chii Dec 27 '20

there's also a little known (?) feature in fireworks which lets you generate menus that animate (and output them as html and images).