« Image vers ASCII vers SVG » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
* Générer de l'ASCII (avec potentiels codes ANSI) + Supprimer les séquences ANSI (couleurs/position)
Voici une proposition de page '''README.md''' en Markdown qui explique clairement ce que font les deux solutions que tu as listées. Elle est structurée pour être facilement compréhensible par des développeurs ou utilisateurs techniques :
<syntaxhighlight lang="bash">
 
img2txt -W 150 -x 1 -y 2 -d fstein -f ansi picture.png | sed -r 's/\x1B\[[0-9;]*[mK]//g' > picture.txt
 
</syntaxhighlight>
-----
: Voir [[Ascii | Ascii]]
 
----
= 🖼️ Conversion d’image en ASCII puis en SVG =
<br /><br />
 
* Convertir en SVG (un glyphe = un élément texte)
Ce projet propose deux méthodes pour convertir une image (<code>.png</code>) en une représentation '''ASCII''', puis en '''SVG'''. L’objectif est de produire une version vectorielle stylisée de l’image, utile pour des rendus légers ou artistiques.
<syntaxhighlight lang="bash">
 
aasvg --spaces=0 --stretch --fill < picture.txt > picture.svg
 
</syntaxhighlight>
-----
: Voir [[SVG| SVG]]<br />
 
== 🧩 Prérequis ==
 
* <code>img2txt</code> (du paquet <code>caca-utils</code>)
* <code>sed</code>
* <code>aasvg</code>
* <code>ImageMagick</code> (<code>convert</code>)
* <code>chafa</code>
* <code>a2s</code>
 
 
-----
 
== 🥇 Solution 1 : img2txt + aasvg ==
 
=== Étapes ===
 
<ol style="list-style-type: decimal;">
<li><p>'''Conversion en ASCII avec codes ANSI'''<br />
On utilise <code>img2txt</code> pour générer une version ASCII colorée de l’image :</p>
<syntaxhighlight lang="bash">img2txt -W 150 -x 1 -y 2 -d fstein -f ansi picture.png | sed -r 's/\x1B\[[0-9;]*[mK]//g' > picture.txt</syntaxhighlight>
<ul>
<li><code>-W 150</code> : largeur de sortie en caractères</li>
<li><code>-x 1 -y 2</code> : facteur d’étirement horizontal et vertical</li>
<li><code>-d fstein</code> : algorithme de dithering</li>
<li><code>-f ansi</code> : sortie avec codes ANSI (couleurs)</li>
<li><code>sed ...</code> : suppression des séquences ANSI pour ne garder que les caractères ASCII</li></ul>
</li>
<li><p>'''Conversion ASCII → SVG'''<br />
On transforme le fichier ASCII en SVG :</p>
<syntaxhighlight lang="bash">aasvg --spaces=0 --stretch --fill < picture.txt > picture.svg</syntaxhighlight>
<ul>
<li>Chaque glyphe devient un élément <code>&lt;text&gt;</code> dans le SVG</li>
<li><code>--spaces=0</code> : pas d’espacement entre les caractères</li>
<li><code>--stretch</code> : étirement automatique</li>
<li><code>--fill</code> : remplissage des glyphes</li></ul>
</li></ol>
 
 
-----
 
== 🥈 Solution 2 : ImageMagick + chafa + a2s ==
 
=== Étapes ===
 
<ol style="list-style-type: decimal;">
<li><p>'''Prétraitement de l’image'''<br />
On prépare l’image pour une meilleure détection des contours :</p>
<syntaxhighlight lang="bash">convert picture.png -colorspace gray -normalize -edge 1 -threshold 10% picture-pre.png</syntaxhighlight>
<ul>
<li>Conversion en niveaux de gris</li>
<li>Normalisation du contraste</li>
<li>Détection des bords</li>
<li>Seuillage pour accentuer les contours</li></ul>
</li>
<li><p>'''Conversion en ASCII simplifié'''<br />
On génère une version ASCII sans couleurs :</p>
<syntaxhighlight lang="bash">chafa --format=symbols --colors=none --dither=none \
      --symbols=ascii --size=200x \
      picture-pre.png > picture.txt</syntaxhighlight>
<ul>
<li><code>--symbols=ascii</code> : uniquement des caractères ASCII</li>
<li><code>--colors=none</code> : pas de couleurs</li>
<li><code>--dither=none</code> : pas de tramage</li>
<li><code>--size=200x</code> : largeur de 200 caractères</li></ul>
</li>
<li><p>'''ASCII → SVG'''<br />
On convertit le fichier ASCII en SVG :</p>
<syntaxhighlight lang="bash">a2s < picture.txt > picture.svg</syntaxhighlight></li>
<li><p>'''Nettoyage du SVG'''<br />
On supprime les lignes parasites :</p>
<syntaxhighlight lang="bash">sed '/<g id="lines"/,/<\/g>/d' picture.svg > picture-clean.svg</syntaxhighlight></li></ol>
 
 
-----
 
== 📁 Résultat ==
 
* <code>picture.txt</code> : version ASCII de l’image
* <code>picture.svg</code> : version vectorielle
* <code>picture-clean.svg</code> : SVG nettoyé (solution 2)
 
 
-----
 
== 📌 Notes ==
 
* La '''solution 1''' est plus rapide et produit un SVG avec des glyphes colorés si on garde les séquences ANSI.
* La '''solution 2''' est plus adaptée pour des rendus en noir et blanc ou des effets de contours.


[[Catégorie:Tools]]
[[Catégorie:Tools]]
[[Catégorie:Dev]]
[[Catégorie:Dev]]
[[Catégorie:Geek]]
[[Catégorie:Geek]]