Concepteur de Mozaïques
Introduction Ce programme est mon tout premier programme Allegro. Un ami faisait un jeu et avait besoin de faire un programme pour transformer des fonds d'écran en mozaïques. Une telle opération est assez simple finalement. Elle revient à isoler dans une image donnée les plus petites parties qui se répètent.
Fonctionnement Un exemple fixera les idées : Il s'agit d'une photo d'écran d'un jeu de la console Sega Megadrive : Shining Force 2 (prise avec l'émulateur Kgen98). Cette image est constituée de plusieurs carrés de 8 pixels de coté (une mozaïque). Voici la même image, mais agrandie 2 fois et avec un quadrillage noir, pour bien voir l'effet de mozaïques : Cette image, on peut s'amuser à compter pour vérifier, est composée de 31 mozaïques horizontales, et de 28 mozaïques verticales (si on fixe la taille d'une mozaïque à 8 par 8 pixels bien entendu). Que fait donc mon programme ? Il analyse cette image, en isole les mozaïques de base, et crée deux fichiers. L'un est une image qui ne comporte que ces mozaïques uniques, et l'autre est un fichier binaire, qui est un tableau d'indices permettant de reconstituer l'image originale.
Ce fichier est une simple suite de nombre, de 2 octets chacun. Le premier est le nombre de mozaïques horizontales composant l'image source, ici 31 donc. Viennent ensuite les mozaïques, dans le sens normal de lecture, c'est à dire de gauche à droite et de haut en bas. Ces indices se réfèrent au fichier 1. Attention, la première mozaïques dans ce fichier est à l'indice 0 et non 1. Dans cet exemple donc, la première ligne de mozaïques va de l'indice 0 à 11, la deuxième de 12 à 23, etc ... : Prenons la 1ère série de nombre du fichier 2 (12, 11, 6, 5, 10 et 9). Ce sont les indices des 6 premières mozaïques du fichier 1. A l'aide du tableau ci-dessus, on peut facilement repérer la correspondance entre l'indice et l'image :
Si on met ces images à la suite on obtient : , ce qui est bien le début de l'image source.
Utilisation Ce programme utilise la ligne de commande pour ses paramètres. Si on le lance sans paramètres on obtient un texte d'aide (en français) que je ne reproduirais pas ici. Quand vous lui indiquez une image (format : BMP, LBM, PCX ou TGA), il la traite de façon standard, c'est à dire que le fichier 1 (les mozaïques) aura par défaut 20 mozaïques horizontales, et autant qu'il le faut dans le sens de la hauteur. Vous pouvez fixer ce nombre de mozaïques à une valeur quelconque en le passant en ligne de commande. Par défaut le programme analyse l'image source dans le sens normal de lecture, mais vous pouvez le forcer à analyser de droite à gauche avec le paramètre -r (comme Reverse en anglais) : cela vous permet de distinguer les mozaïques beaucoup plus facilement dans le fichier 1. A l'exécution, le programme fournit diverses infos. Voici ce que j'obtient en utilisant l'image de l'exemple :
Assez verbeux donc, mais il donne tout ce dont j'avais besoin. En ce qui concerne la taille des mozaïques, elle est fixée à 8 pixels de coté. Mais en éditant le code source et en le recompilant, il est très facile d'obtenir une valeur qui convient à vos besoin, puisqu'il suffit juste de changer la valeur d'une directive #define.
Télécharger Enfin, pour terminer, voici l'archive zip (222 ko) qui contient l'exécutable, le source, et les fichiers de l'exemple. Lancez juste le fichier go.bat pour obtenir exactement les fichiers résultats de l'exemple.
|