Pixel SVG

Conversion d'image pixelisée en SVG

J'ai rejoint il y a peu un JDR en ligne appelé Kigard.

Ce dernier a un thème graphique rétro pixelisé.

Un peu par challenge et pour proposer au staff du jeu un moyen de migrer les images en SVG, j'ai codé une lib qui permet de convertir des images GIF animées ou non en SVG.

L'avantage du SVG est sa nature vectorielle qui aura un rendu pixelisé propre quelque soit la nature du client web (PC, mobile, ...).

Name GIF SVG
Fire fire gif fire svg
Tree tree gif tree svg

Le challenge consistait dans l'optimisation des paths SVG pour simplifier et réduire la taille du fichier produit. Une conversion naïve de chaque pixel en un path unique produisait un fichier assez conséquent. Fusionner les paths et optimiser les nodes a permis en gros de réduire la taille des SVG de 80%.

Pour une image statique, il n'y a plus vraiment de stratégie d'optimisation à part :

Dans le cas d'image animée, on pourrait tenter d'aller plus loin avec ces idées :

Cependant, à ce stade, vu la petite taille des images (et donc le nombre de nodes possibles), les gains seraient probablement marginaux et situationels.

Détails

Pour plus de détails techniques, allez voir le README sur Gitlab.

Liens