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.
- 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)
- Export to 320×480 PNG files
- 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
- 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.