Optimisation par lots des files PNG pour l'affichage de l'iphone / ipad comme le fait xcode

Je travaille sur une visionneuse de magazine pour iPad et je suis aux sockets avec la performance.

J'ai compris que la partie la plus coûteuse de l'affichage des png est le process de chargement. Je sais que xcode est capable d'optimiser les png pendant la construction et que ces images sont chargées beaucoup plus rapidement. Mais je ne peux pas inclure toutes les images dans la construction car ce sera énorme.

Savez-vous comment optimiser un png arbitraire sans l'inclure dans le process de construction?

Savez-vous quel est le meilleur format pour iPhone? Je pense que pngs devrait utiliser le schéma de colors RGB-8888 mais je ne suis pas sûr de ce qui est important.

Peut-être connaissez-vous les parameters exacts pour imagemagick?

Je pense avoir trouvé un bon article sur l'optimization png pour iphone: http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html

Il semble que xcode utilise cette command: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/iphoneos-optimize

Il semble que la command ci-dessus utilise une version modifiée de pngcrush pour optimiser les pngs et transformer les canaux de couleur: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -iphone -f 0 orig.png optimized.png

Et l'optimization est vraiment utile. J'ai 5 fois plus de chargement de l'image!

Les meilleurs résultats que je connaisse sont obtenus avec ImageOptim , que je m'utilise pour les PNG qui ne sont pas déployés via Xcode. Il utilise pngcrush et d'autres outils d'optimization PNG pour get la meilleure compression. Pour autant que je sache, il n'utilise pas la prémultiplication alpha et l'échange d'octets. ImageOptim a également une interface graphique agréable avec un support par glisser-déposer et peut écraser plusieurs files simultanément.

Nous avons utilisé Pngcrush pour compresser un grand nombre de files PNG. Vous pouvez essayer cela aussi. Et même si vous n'avez pas besoin de transparence, vous pouvez aussi essayer le format JPG au lieu du format PNG. Mais vous pouvez passer par un certain nombre de process d'essais et d'erreurs pour cela, en comparant le compromis de taille et de qualité à plusieurs resockets.

Dans ma taille de file de reference s'est avéré être plus important que le prétraitement Xcode (les files Xcode étaient plus gros et plus lent à charger).

La meilleure façon de réduire la taille du file PNG est de le convertir au format PNG8 + alpha – vous pouvez le faire en batch avec pngquant (ou modifier manuellement avec GUI ).

Cependant, si dans votre cas la conversion de RGBA à BGRA prémultiplié est ce qui prend le plus de time, alors une fourche d'AdvanceCOMP avec des extensions propriétaires de XCode ajoutée vous permettra de convertir par lots le format PNG au format natif d'iOS.

J'ai expérimenté avec pngnq, pngquant, pngcrush, optipng, etc.

Pour mon set de files PNG, j'ai atteint la taille de file minimale avec pngquant, pngnq et pngcrush

 Dir.glob("**/*.png").each do |file| ['pngnq -e .png -f', 'pngquant -f -speed 1 -ext .png', 'pngcrush'].each do |command| puts "#{command} #{file}" `#{command} #{file}` end end 

Plus de détails sur: http://l4u.github.com/blog/2012/04/02/optimizing-file-sizes-of-png-images/

J'ai beaucoup, beaucoup d'espace en utilisant pngnq , mais je n'ai fait aucun test pour voir si le déencoding de l'image le ralentit du tout.

Essayez http://texturepacker.com

Il peut non seulement optimiser les PNG mais aussi réduire les colors, par exemple en RGBA4444 ou RGB565, ce qui réduit considérablement la taille du ping et améliore le rendu sur les périphériques.

Vous pouvez également exporter des files PVR pour les appareils qui le prennent en charge (par exemple iOS, certains Android)

Et il prend également en charge la réduction des images pour les appareils basse résolution.