
ASCII Art : Traitement d'images
Quel est le commanditaire du projet ?
Le commanditaire du projet est un client qui souhaitait disposer d'un logiciel lui permettant de retranscrire des images en Ascii Art. Ce projet s'inscrit dans le cadre des SAé (Situations d’Apprentissage et d’Évaluation), qui sont proposées à plusieurs reprises au cours de l'année.

Liste des charactères disponibles dans le code ASCII
Mais qu'est-ce que l'Ascii Art ?
L’art ASCII consiste à réaliser des images uniquement à l'aide des lettres et caractères spéciaux contenus dans le code ASCII. Le code ASCII (l'American Standard Code for Information Interchange) est une norme informatique d'encodage de caractères et il s'agit de la norme la plus utilisée pour représenter des caractères dans les systèmes informatiques.
Quelle est la demande de départ ?
L'objectif était donc de développer un logiciel capable de réaliser ce traitement via l’utilisation d’un utilitaire nommé img2pgm. Il permet de transformer des fichiers images du format PNG ou JPEG au format PGM (portable graymap file format) qui permet d’avoir le niveau de gris de chaque pixel d’une image en format textuel.
Quelles sont les grandes lignes du cahier des charges ?
Le cahier des charges demandait de développer un logiciel capable de convertir une image en ASCII Art, avec la possibilité de choisir une palette de caractères personnalisés. Il devait également permettre l'utilisation d'arguments en ligne de commande pour semi-automatiser le traitement, et intégrer un algorithme de réduction de la taille des images en entrée.
Numérique responsable, essentiel dans le développement !
Le numérique représente aujourd’hui une part importante des émissions de gaz à effet de serre. Face à cet impact croissant, il devient indispensable d’adopter une démarche de numérique responsable, qui vise à réduire l’empreinte écologique des technologies. Cela passe par des choix techniques plus sobres, une meilleure conception des services numériques et une utilisation mesurée des ressources. Le Green IT s’inscrit dans cette logique en cherchant à limiter la consommation énergétique et l’empreinte matérielle des logiciels.

Image représentant le principe de réduction d'une facteur 2 en largeur et hauteur
Et dans ce projet, il intervient où le numérique responsable ?
Rappelez-vous, je viens de vous évoquer que dans le cahier des charges, il était demandé de réaliser un algorithme de réduction de la taille des images en entrée. Cet algorithme s’inscrit dans la démarche du numérique responsable. Sa stratégie est de parcourir l’ensemble des pixels de l’image réduite et pour chacun, de déterminer en fonction du facteur de réduction, l’ensemble des pixels correspondants dans l’image originale et d’en calculer la moyenne. Cela permet de réduire le nombre de pixels d’une image et donc d’alléger la taille de celle-ci.
Comment s'est déroulé le projet ?
| Recherche et choix des outils | ↪ Sélection de l'utilitaire img2pgm pour convertir les images en niveaux de gris. |
| ↪ Définition des algorithmes nécessaires pour la conversion en ASCII Art et la réduction de la taille des images. | |
| Conception du logiciel | ↪ Développement d'une architecture modulaire pour faciliter l'ajout de fonctionnalités. |
| ↪ Conception d'un algorithme pour mapper les niveaux de gris des pixels à des caractères ASCII. | |
| Développement | ↪ Implémentation en C++ pour garantir des performances optimales. |
| ↪ Intégration de img2pgm pour la conversion des images. | |
| ↪ Développement de l'algorithme de réduction de la taille des images. | |
| Tests et validation | ↪ Vérification des résultats pour différents formats d'images (PNG, JPEG). |
| ↪ Validation de la qualité de l'ASCII Art généré. | |
| ↪ Tests des arguments en ligne de commande pour semi-automatiser le traitement. | |
| Optimisation et finalisation | ↪ Optimisation des performances de l'algorithme. |
| ↪ Documentation du logiciel pour faciliter son utilisation. |
Technologies, outils et langages utilisés
Et cela m'a apporté quoi ?
Compétences techniques
- Maîtrise du langage C++ pour le développement d'algorithmes performants.
- Utilisation d'outils spécifiques comme img2pgm pour la conversion d'images.
- Conception d'algorithmes pour la réduction de la taille des images et la conversion en ASCII Art.
Compétences transversales
- Gestion de projet : respect des délais et des exigences du cahier des charges.
- Résolution de problèmes : adaptation des algorithmes pour répondre aux contraintes du numérique responsable.
Compétences humaines
- Collaboration avec les membres de l'équipe pour partager les tâches et les idées.
- Communication claire pour expliquer les choix techniques et les résultats obtenus.
Et voilà comment je suis devenu un artiste (si on peut dire ça comme ça...)
Ce projet m'a permis de développer des compétences techniques solides en C++ et en manipulation d'images, tout en intégrant des principes de numérique responsable. Il a approfondi ma capacité à travailler et collaborer avec plusieurs membres dans une équipe. Satisfait du rendu final, le logiciel final respect l’ensemble des règles du cahier des charges et nous laisse libre à l’imagination des images que nous pouvons transformer en ASCII Art. En vue d’une amélioration de ce projet, j’ai mené plusieurs réflexions sur la réalisation de ce logiciel avec une interfaces interactive via le framework C++ et Qt.

Image représentant le logo de Batman en ASCII Art

