Converting PNG files
Updated: July 8, 2012
I've read several reasons why you can't just take a png file out of the iOS firmware and
open it in your favorite image editing program: there's additional data in the file that
makes it unrecognizable, the color channels are skewed, the images are compressed by
removing metadata. It's my understanding the pngs are modified like this to make it
easier/quicker for the iPhone to process and render them, or just to befuddle people who
would mess around with the iOS system files.
If you try to view stock graphic files in the firmware, you'll see they refuse to display.
Whatever the reason, there are a few ways to convert these images to an editable state.
FixPngDroplet was the first program I came across years ago. I think it's development
has come to an end, however you can read my original tutorial from the 1.x firmware days
- A similar program
- The Python based
iPhone PNG Images Normalizer.
also isn't 100% reliable.
can do it, but I don't want to spend $40 to find out.
There is also a program called
I haven't used. That page provides an excellent analysis of what Apple does to pngs.
You can of course use
Apple took the open source program pngcrush and modified it (while not making their
changes open source) and included it with Xcode. I'll show you how to do this with Xcode.
Install Xcode. Xcode will take some 15 minutes or so to download and install. It's 1.4
Once you have installed the program from the the App Store, launch the Xcode.app in your
/Applications folder to complete the installation process.
In order to get to the pngcrush program we need to be able to view the contents of the
Xcode.app. Right click the app to do this.
Now go to Contents//Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
You'll see the pngcrush binary here. Either copy it someplace easier to remember or just
remember the path to it to use in the Terminal later. I placed a copy on the Desktop.
Go to your /Applications/Utilities directory. You'll find a program called Terminal.app.
Launch it. Change directories to wherever you decided to place pngcrush. I placed a copy
on the Desktop along with the graphic I wanted to convert. The command you use to convert
a graphic is:
./pngcrush -revert-iphone-optimizations -q GraphicYouWantToConvert.png TheNameYouWantToGiveTheNewGraphic.png
Here it is, a completely editable image. You do not need to do anything fancy to put
this graphic back onto the iPhone, other than making sure it stays in .png format.