PNG Optimization

I am creating a large number of PNG files for an Android application and need to make the images as small as possible without losing quality.


After quite a bit of experimentation, I settled on these steps.

  1. Create the original images in Illustrator
    • Use a limited number of colors
    • Avoid transparency
    • Avoid gradients
    • Create the images in the desired dimensions, 320×480 in my case (to avoid scaling artifacts when exporting)
  2. Export to 320×480 PNG files
  3. Use Gimp to convert to Indexed colors (Image -> Mode -> Indexed)
    • Generate optimized palette
    • Maximum number of colors = 48 (this works well for my particular images — it does NOT work well if you have gradients)
    • No color dithering
  4. Use PNGCrusher to reduce file size even more

PNGCrusher only helps a tiny bit since I already optimized in Gimp, but it can produce pretty dramatic results for non-optimized PNG files.