Dermot Posted June 7, 2010 Share Posted June 7, 2010 This is a program I've been working on for easily half a year. :3 An excerpt from the readme file:Version 1.0.0by Gilgameshgilgamesh@aerifal.cx19 May 2010IntroductionFile 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).UsageA 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 ExtractIf 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.......Click here to download.Here's a sample File Illustration to test for yourselves. Link to comment Share on other sites More sharing options...
Geo Stelar Posted June 7, 2010 Share Posted June 7, 2010 sounds useful enough :cool: Link to comment Share on other sites More sharing options...
CrypticQuery Posted June 7, 2010 Share Posted June 7, 2010 LOOKS AWESOME! Now if only there was a dumbed-down version so I could figure out what that all meant . All I got was the .PNG part . Link to comment Share on other sites More sharing options...
Dermot Posted June 7, 2010 Author Share Posted June 7, 2010 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 More sharing options...
CrypticQuery Posted June 7, 2010 Share Posted June 7, 2010 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! . *Download commencing* Link to comment Share on other sites More sharing options...
Geo Stelar Posted June 8, 2010 Share Posted June 8, 2010 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 More sharing options...
Mr. Foxer Posted June 8, 2010 Share Posted June 8, 2010 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 More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 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 More sharing options...
Guest FoXXX Posted June 8, 2010 Share Posted June 8, 2010 Wow! That's awesome EDITI'm wondering, can you compress an entire folder? Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 Wow! That's awesome EDITI'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 More sharing options...
Sabre Posted June 8, 2010 Share Posted June 8, 2010 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 More sharing options...
Guest FoXXX Posted June 8, 2010 Share Posted June 8, 2010 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. :3Awesome I like it :) Link to comment Share on other sites More sharing options...
Guest DRL Posted June 8, 2010 Share Posted June 8, 2010 So let me understand:Your program... Compresses the file size? Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 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 More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 Here's a more useful sample. It's the entire SPC music collection for Star Fox 1 & 2, inside a 7zip, inside a PNG. :3Now 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 More sharing options...
Guest Julius Quasar Posted June 8, 2010 Share Posted June 8, 2010 ^ Cool! A classic never dies... Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 ^ 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. I even packed the alpha channels, which is why the image is slightly translucent too. Link to comment Share on other sites More sharing options...
Guest DRL Posted June 8, 2010 Share Posted June 8, 2010 So you can store files in a image?Now I am confused, you are doing a great job,yeah, but I... : Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 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 More sharing options...
Guest DRL Posted June 8, 2010 Share Posted June 8, 2010 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! Fowards the revolution! (Just kidding, I could notresist imitating the Soviet motto :lol:)But seriously Open Source is a GrEaT thing!. Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 AWEC00L!Fowards the revolution! (Just kidding, I could notresist imitating the Soviet motto :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 More sharing options...
Guest DRL Posted June 8, 2010 Share Posted June 8, 2010 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. :3Do not worry, I am something in-between,leaning towards the first. 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 More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 Do not worry, I am something in-between,leaning towards the first. 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 More sharing options...
Guest DRL Posted June 8, 2010 Share Posted June 8, 2010 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 protectimportant files. You know, 'hid' the fileinto a PNG, but only you know it is there,and nobody 'should' know it is there. :wink: Link to comment Share on other sites More sharing options...
Dermot Posted June 8, 2010 Author Share Posted June 8, 2010 AWEC00L!Now that could be a way to protectimportant files. You know, 'hid' the fileinto a PNG, but only you know it is there,and nobody 'should' know it is there. Steganography? That works until everyone knows about this app. :P Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now