Jump to content

File Illustrator released


Dermot

Recommended Posts

This is a program I've been working on for easily half a year. :3 An excerpt from the readme file:

Version 1.0.0

by Gilgamesh

gilgamesh@aerifal.cx

19 May 2010

Introduction

File Illustrator is a utility which allows you to encode the complete data of any arbitrary file into a Portable Network Graphics (PNG) image by storing its raw data directly in the image's pixels.  File Illustrator can also losslessly extract the data from these PNGs back into ordinary files.  The archive format used in such PNGs is called File Illustrator Archive (FIAR).

File Illustrator is Free Software licensed under the terms of the GNU General Public License (see gpl.txt for complete details).  This release of File Illustrator is written entirely in Java as a graphical user interface executable Java Archive (JAR) compatible with the Java Platform, Standard Edition (version 6 or later).

Usage

A Java SE 6-compatible runtime environment must already be installed.  If this is already the case, run fileillustrator.jar.  On many operating systems, this is as simple as double-clicking it.

How to Extract

If you were directed to this program to be able to extract files from PNGs that have already been made, this is the section you want to read.

The easiest way to extract is simply to drag and drop a file or selection of multiple files onto the program window.  That's all.  This will automatically extract the files to the same directory their PNG archives are located in.  Already existing files will never accidentally be overwritten, as new similar filenames are created as necessary.

If any of the images failed to extract a file, then the particular image is either not a File Illustration Archive, or it is a corrupted archive.  All files that are successfully extracted can be treated as fully intact, as there is only about a one-in-four-billion chance that a corrupted archive will successfully extract.

......

Link to comment
Share on other sites

sounds useful enough :cool:

Link to comment
Share on other sites

LOOKS AWESOME! Now if only there was a dumbed-down version so I could figure out what that all meant :D.  All I got was the .PNG part :lol:

Link to comment
Share on other sites

Extracting files encoded in the PNGs is easy - download and run the program, and drag-and-drop the cookies PNG over the program window. :3 Making these kinds of PNGs takes a little bit of a learning curve, but it's all explained in the readme (which goes longer than the excerpt I quoted).

Link to comment
Share on other sites

Extracting files encoded in the PNGs is easy - download and run the program, and drag-and-drop the cookies PNG over the program window. :3 Making these kinds of PNGs takes a little bit of a learning curve, but it's all explained in the readme (which goes longer than the excerpt I quoted).

That makes it simpler! :D.  *Download commencing*

Link to comment
Share on other sites

I think this is sticky worthy.

A helpful application like this must be seen.

At least that's my opinion.

Link to comment
Share on other sites

I still don't understand what exactly this does. You can extract the frames from APNGs and such?

Link to comment
Share on other sites

I still don't understand what exactly this does. You can extract the frames from APNGs and such?

This program can store a file inside a PNG as if the PNG were a zip file.  And then you can extract that stored file from the PNG again.  The file inside the PNG can be any kind of file - including a zip file or another PNG.  It does this by storing the data in the less significant bits of the color channels of the PNG image pixels.

Link to comment
Share on other sites

Wow! That's awesome :)

EDIT

I'm wondering, can you compress an entire folder?

Yes.  Put the folder inside a zip, a rar or a 7z.  Technically, a zip, a rar or a 7z is one file, even though it contains many other files inside. :3

Link to comment
Share on other sites

Interesting. PNG is my favourite image type too as it's lossless.

I remember seeing 'file in pictures' on an episode of some cop show, and they got it completly wrong on the extraction part.

Link to comment
Share on other sites

Guest FoXXX

Yes.  Put the folder inside a zip, a rar or a 7z.  Technically, a zip, a rar or a 7z is one file, even though it contains many other files inside. :3

Awesome :D I like it :)

Link to comment
Share on other sites

So let me understand:

Your program...

Compresses the file size?

Only by virtue that PNG is a lossless compressed image format.  PNG actually uses zlib for compression - the same algorithm used for zip files.  If you make a File Illustration (which is what I call these special PNGs) and run it through a PNG deep-recompression utility (such as PngOptimizer or AdvPNG - or even both, since one may compress better than the other), then it can be about as compressed as a zip file.

Another appeal of File Illustrator is that you can provide a picture to decorate the data.  In this mode, the data occupies the lower bits of the ARGB channels, and the picture occupies the (ignored) higher bits of the ARGB channels.  In the chocolate chip cookie recipe example above, I used the minimal mode, storing only one bit of archive data in each pixel, as the lowest bit of each blue pixel (since blue is the least visible of the color channels).

There's a balance.  The more bits per pixel you use for archive data, the more you can fit in smaller image dimensions, but you sacrifice picture color detail.  But the less bits per pixel you use for archive data, you can still have a beautiful vibrant image, but the archive data is spread out thinner.

In the program, you can select how many bits of which pixel channels are used for archive data.  If you're not using picture mode, the PNG will contain only archive data, and will look like colorful snow.  If you're using picture mode, the archive data will appear as subpixel noise - the more bits you allocate for this noise, the louder the noise appears and the less deep the picture's color is.  All this is in the readme. :3

Link to comment
Share on other sites

Here's a more useful sample.  It's the entire SPC music collection for Star Fox 1 & 2, inside a 7zip, inside a PNG. :3

Star Fox 1 & 2 SPC.7z.png

Now here's what I did.  I created the archive with "Use Picture", and used a (much larger) version of the image you see here.  I enabled "Resize to Fit" (so the picture would shrink to fit the needed space for the data), disabled "Greyscale" (since I want to preserve color), set "Color Stretch" to "Distribute" (rather than "None" or "Histogram" - it's just something to play with :3), set "Dither" to "Error Diffusion" (using the Floyd-Steinberg error diffusion algorithm), enabled "No Invisible Pixels" (if a File Illustration has any fully-transparent pixels, they tend to be corrupted in PNG deep-recompressors), and I selected both "Preview" options so that I could preview the result before and after the data noise is mixed in.  I decided to store 6 bits of data each in the alpha, red, green and blue channels (24 bits or 3 bytes of data per pixel), and the remaining 2 bits of each channel were left over for the visible picture - this is why the picture had to be dithered.  I created and saved the result PNG, then fed it through two deep-recompressors (PngOptimizer and AdvPNG), shrinking the PNG's file size even more without losing anything.

The result is a 425873-byte PNG which stores a 349912-byte 7zip.  A good picture-to-data ratio, all things considered.

Link to comment
Share on other sites

^ Cool!

You can tell the pixels are packed with already-compressed data, which is why, even when shrunk as much as I could, the image is so slow to load.  You're literally downloading the entire 7zip every time you load the image. :P

I even packed the alpha channels, which is why the image is slightly translucent too.

Link to comment
Share on other sites

So you can store files in a image?

Now I am confused, you are doing a great job,

yeah, but I...  :?:

That's right, there's a file inside the image's pixel data. :3 The complete archive data format is documented in the technical section of the readme.  And the entire program is open-source Free Software under the GNU General Public License. :3 Socialism rules! :D

Link to comment
Share on other sites

That's right, there's a file inside the image's pixel data. :3 The complete archive data format is documented in the technical section of the readme.

AWEC00L!

And the entire program is open-source Free Software under the GNU General Public License. :3 Socialism rules! :D

Fowards the revolution! (Just kidding, I could not

resist imitating the Soviet motto  :lol: :lol:)

But seriously Open Source is a GrEaT thing!.

Link to comment
Share on other sites

AWEC00L!Fowards the revolution! (Just kidding, I could not

resist imitating the Soviet motto  :lol: :lol:)

But seriously Open Source is a GrEaT thing!.

I'm a social democrat (European-style).  More comfortable in human-rights-friendly Stockholm than in authoritarian Havana. :3 But let's not get into politics - I only like to bring it up here on SFO in a light-hearted manner. :3

Link to comment
Share on other sites

I'm a social democrat (European-style).  More comfortable in human-rights-friendly Stockholm than in authoritarian Havana. :3 But let's not get into politics - I only like to bring it up here on SFO in a light-hearted manner. :3

Do not worry, I am something in-between,

leaning towards the first. :lol:

But okay, I will download the program.

A question:

Let's say I compress a file into a PNG.

Now, can I get the file "out-of-it", I mean,

"extract" it by using the program?

Link to comment
Share on other sites

Do not worry, I am something in-between,

leaning towards the first. :lol:

But okay, I will download the program.

A question:

Let's say I compress a file into a PNG.

Now, can I get the file "out-of-it", I mean,

"extract" it by using the program?

Just drag and drop the PNG onto the program window to extract.  The contained file will be written to the same directory that the PNG file is located in.  No existing files will be overwritten (new filenames will be created if necessary).

Link to comment
Share on other sites

Just drag and drop the PNG onto the program window to extract.  The contained file will be written to the same directory that the PNG file is located in.  No existing files will be overwritten (new filenames will be created if necessary).

AWEC00L!

Now that could be a way to protect

important files. You know, 'hid' the file

into a PNG, but only you know it is there,

and nobody 'should' know it is there. :wink:

Link to comment
Share on other sites

AWEC00L!

Now that could be a way to protect

important files. You know, 'hid' the file

into a PNG, but only you know it is there,

and nobody 'should' know it is there. :wink:

Steganography?  That works until everyone knows about this app. :P

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...