Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I skip compressing one PNG?

(Note: I have solved this problem, but it took long enough that I'm posting question/answer here.)

The Xcode build process "optimizes" my PNGs when building. This isn't usually a problem, but iTunesArtwork being processed in this way causes corrupts it so that iTunes not to be able to show it. How can I prevent this?

like image 509
Steven Fisher Avatar asked Jan 12 '10 20:01

Steven Fisher


3 Answers

You can read more about Xcode's PNG compression here: http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html

While you can turn off PNG optimization/compression entirely using "Compress PNG Files" in your project settings (it's visible only if the project's Base SDK is set to a device SDK, not a simulator SDK), you don't want to do this! Read the link above for details on why, but the gist of it is that the optimization lets the iPhone skip some math that slows down PNG display.

Xcode will only optimize PNG image files that it knows about. To prevent a specific PNG from being optimized, you change its file type so Xcode no longer knows it's a PNG.

  1. Select the file in the project window.
  2. Choose File->Get Info.
  3. On the General tab, change File Type from image.png to file.

(This is actually the default when you add a file without an extension, which is presumably why iTunesArtwork doesn't have one. But if you're pedantic like me you checked the File Type setting and fixed it.)

like image 178
Steven Fisher Avatar answered Sep 25 '22 00:09

Steven Fisher


For all you guys using Xcode 6.4 and above:

Go to: "Targets" - "YourProject Name".

Next go to the "Build Settings" tab. Just below the Tab name click the "Basic" and "Combined" Button.

Next scroll down to the "Packaging" seperator and you will find "Compress PNG Files" set to "Yes" by default.

enter image description here

like image 43
MB_iOSDeveloper Avatar answered Sep 24 '22 00:09

MB_iOSDeveloper


Found another very simple method to disable compression for a single png file. I think this is a better approach than the accepted answer because you don't have to change type (or extension) of file in the local file-system but only in XCode.

Change the file type from Default - PNG Image to Data in Identity and Type inspector in XCode. See below:

Was:

enter image description here

Now:

enter image description here

like image 23
Sanandrea Avatar answered Sep 26 '22 00:09

Sanandrea