2011-05-08

PngOptimizer 2.0

Après une longue hibernation, j'ai repris les développements sur PngOptimizer. Voici donc la version 2.0, qui comprend de nombreuses modifications.

D'un point de vue fonctionnalités, le plus gros point concerne le support du APNG, un nouveau format d'animation proche du GIF animé, mais qui profite des atouts du PNG, notamment des images en 24 bits et/ou avec plusieurs niveaux de transparence.

Un exemple de APNG, converti à l'aide de PngOptimizer 2.0 à partir d'un GIF animé :

L'algorithme de conversion d'un GIF animé en APNG m'a apporté son lot de difficultés en raison de différences intrinsèques aux deux formats. Je souhaitais que la compression reste bonne, mais que le résultat affiche quelque chose de cohérent même sur les navigateurs ne supportant pas le APNG. J'espère que mes tests auront été suffisants.

Le support du APNG est excellent sur Firefox 4, bien meilleur que sur la 3.6 où subsistait encore des limitations. Les navigateurs concurrents ne sont hélas pas encore à niveau, mais, de la même façon que je souhaitais contribuer à la popularité du PNG en publiant PngOptimizer il y a neuf ans (déjà !), j'espère que PngOptimizer 2.0 contribuera à son niveau à populariser le APNG.

D'autres nouveautés sont présentes, comme une version x64, une IHM repensée, quelques améliorations de compression et des bugs corrigés. Les détails sont consignés dans le « changelog » du téléchargement.

J'ai aussi remis à niveau mon environnement de développement :

  • utilisation de Mercurial à la place de Subversion ;
  • passage à Visual Studio 2010 (la version Express suffit) ;
  • utilisation de gtest pour les tests unitaires.

Je pourrai ainsi faire face à des nouveaux bugs ou de nouvelles fonctionnalités ^^

En terme de nouvelles fonctionnalités, ce que j'ai en tête, c'est une étude sur les gains de performance que je pourrai avoir en exploitant les processeurs multi-c½urs actuels. PngOptimizer est en effet très gourmand en temps machine, et sur de grosses images le temps d'attente peut être long. Je pense qu'à cette occasion je mettrai aussi en place un graphique de progression de l'optimisation.

Plus tard, j'aimerais tenter une version Linux, d'abord en portant la version en ligne de commande de PngOptimizer. Pour le moment, j'en suis encore à me demander quel IDE choisir.

Bonnes conversions/optimisations ! ^^