« Image vers ASCII vers SVG » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
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> | ----- | ||
: | |||
---- | = 🖼️ Conversion d’image en ASCII puis en SVG = | ||
< | |||
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> | ----- | ||
: | |||
== 🧩 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><text></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]] | ||
Version du 21 octobre 2025 à 12:51
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 :
🖼️ Conversion d’image en ASCII puis en SVG
Ce projet propose deux méthodes pour convertir une image (.png) 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.
🧩 Prérequis
img2txt(du paquetcaca-utils)sedaasvgImageMagick(convert)chafaa2s
🥇 Solution 1 : img2txt + aasvg
Étapes
Conversion en ASCII avec codes ANSI
On utiliseimg2txtpour générer une version ASCII colorée de l’image :img2txt -W 150 -x 1 -y 2 -d fstein -f ansi picture.png | sed -r 's/\x1B\[[0-9;]*[mK]//g' > picture.txt
-W 150: largeur de sortie en caractères-x 1 -y 2: facteur d’étirement horizontal et vertical-d fstein: algorithme de dithering-f ansi: sortie avec codes ANSI (couleurs)sed ...: suppression des séquences ANSI pour ne garder que les caractères ASCII
Conversion ASCII → SVG
On transforme le fichier ASCII en SVG :aasvg --spaces=0 --stretch --fill < picture.txt > picture.svg
- Chaque glyphe devient un élément
<text>dans le SVG --spaces=0: pas d’espacement entre les caractères--stretch: étirement automatique--fill: remplissage des glyphes
- Chaque glyphe devient un élément
🥈 Solution 2 : ImageMagick + chafa + a2s
Étapes
Prétraitement de l’image
On prépare l’image pour une meilleure détection des contours :convert picture.png -colorspace gray -normalize -edge 1 -threshold 10% picture-pre.png
- Conversion en niveaux de gris
- Normalisation du contraste
- Détection des bords
- Seuillage pour accentuer les contours
Conversion en ASCII simplifié
On génère une version ASCII sans couleurs :chafa --format=symbols --colors=none --dither=none \ --symbols=ascii --size=200x \ picture-pre.png > picture.txt
--symbols=ascii: uniquement des caractères ASCII--colors=none: pas de couleurs--dither=none: pas de tramage--size=200x: largeur de 200 caractères
ASCII → SVG
On convertit le fichier ASCII en SVG :a2s < picture.txt > picture.svg
Nettoyage du SVG
On supprime les lignes parasites :sed '/<g id="lines"/,/<\/g>/d' picture.svg > picture-clean.svg
📁 Résultat
picture.txt: version ASCII de l’imagepicture.svg: version vectoriellepicture-clean.svg: 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.