Si j'ai un fichier texte brut, comment puis-je le convertir en fichier image via la ligne de commande? (et y conserver la disposition de l'art ASCII)
command-line
Quora Feans
la source
la source
cat
prendre et prendre une capture d'écran?clear && cat file
. Mais oui, c'est moche.Réponses:
Vous pouvez utiliser openoffice (libreoffice) pour le faire.
cela fonctionne aussi avec les fichiers texte.
la source
--help
sortie.) Seulement des rides, si le texte est plus long qu'une page, il semble que vous n'obteniez que la première page. (S'il y a un moyen de lui dire de sortir d'autres pages ou plusieurs fichiers, ce n'est pas immédiatement évident pour moi. Passer--outdir
ne fait aucune différence.) Mais pour les petits morceaux de texte, cela fonctionne EXTRÊMEMENT bien, et même les retours automatiques. Agréable!soffice --convert-to jpg ascii.txt && mogrify -trim -bordercolor "#FFF" -border 10 +repage ascii.jpg
imagemagick
est ton ami ici. Quelque chose de semblable au suivant peut vous aider: -où
ascii.txt
est votre fichier ascii-art: -avec
text 15,15
ajouté comme première ligne de texte (le 15,15 est un décalage de position). Assurez-vous également que le texte à convertir est placé entre guillemets. Les guillemets simples ou doubles suffiront, mais assurez-vous qu'ils ne sont pas utilisés dans le cadre de votre ascii-art car cela perturbera les choses.La police que vous choisissez doit être une police à espacement fixe, sinon le texte ne s'alignera pas.
Cela produit: -
la source
-list
option. Donc, par exempleconvert -list font
, vous montrerait tous les arguments possibles pour-font
.sudo yum install ImageMagick
.sudo dnf install ImageMagick
, et sur la plupart des autres distributions Linux populaires, ce sera unesudo apt-get install ...
commande. Quoi qu'il en soit, les informations ci-dessus supposent en effet qu'ImageMagick est installé sur le système en question.Je trouve que l'
-annotate
opérateur d' ImageMagick est un peu plus pratique que la-draw
méthode suggérée par garethTheRed, pour la simple raison qu'il ne nécessite pas de modification du fichier d'entrée. Ce n'est pas aussi puissant que-draw
, mais pour le dumping en gros du contenu d'un fichier texte dans une image, il sert très bien.affichera une version rendue du contenu du fichier donné, mais sans avoir à modifier votre fichier "ascii.txt" pour contenir la
text 15x15
partie de la-draw
primitive.Spécification des arguments
L'argument to
-font
peut être n'importe quel nom de police pris en charge, si FreeMono n'est pas disponible (ou n'est tout simplement pas souhaité). Une liste des polices disponibles pour toute commande ImageMagick peut être obtenue à l'aide de l'-list
opérateur, doncconvert -list font
affichera tous les arguments possibles pour-font
.Les arguments pour
-annotate
(jusqu'où déplacer le texte rendu du bord du canevas) consistent en des décalages de pixels horizontaux et verticaux (respectivement). Le premier décalage (décalage horizontal x) peut être n'importe quel entier positif, mais ne doit pas être supérieur à quelques pixels. Le deuxième décalage (décalage vertical y) doit être au moins égal à la taille en points de la police choisie (l'argument à-pointsize
), car ImageMagick placera la ligne de base de la police au décalage donné. Donc, si vous ne diminuez pas la police d'au moinspointsize
pixels, le haut de la première ligne sera coupé.Je recommande de dépasser de plusieurs pixels au moins, donc si vous utilisez,
-pointsize 64
vous devez associer cela à quelque chose comme-annotate +15+80
. (Il n'y a aucune raison d'augmenter le décalage horizontal avec des tailles de police plus grandes, il n'a aucun rapport avec les dimensions du texte.)Devoir deviner les dimensions nécessaires de l'image de sortie peut également être fastidieux. Je choisis généralement des valeurs excessives, puis profite d'ImageMagick
-trim
et-border
de recadrer automatiquement le résultat. La commande suivante:s'affichera dans une zone de 1 000 x 2 000, puis coupera l'espace blanc en excès, à l'exception d'une bordure de 10 pixels tout autour du texte. Le tout
+repage
à la fin empêche la création du PNG de sortie avec un décalage d'image, ce qui entraînerait sinon GIMP à ouvrir une boîte de dialogue lors du chargement lui demandant s'il doit appliquer le décalage.(Évidemment, 1000x2000 est excessif pour les petits fichiers texte, et pour les plus longs, au moins la dimension verticale doit être augmentée. Cependant, il est plus simple de surestimer, car le seul coût
convert
consomme un peu plus de CPU et de mémoire lors du traitement.)Entrée de prétraitement
Si votre fichier texte n'est pas déjà formaté comme vous le souhaitez pour le rendre (par exemple, s'il utilise de très longues lignes), vous devrez peut-être le reformater avant de le remettre
convert
. ImageMagick n'encapsulera pas le texte, donc chaque ligne de texte s'étendra sur toute sa longueur horizontalement. Heureusement, il est possible d'exécuter le fichier via n'importe quel formateur de ligne de commande que vous souhaitez, puis de diriger le texte traité auconvert
lieu de le lire directement à partir du fichier:Cela rendra le contenu de
ascii.txt
DejaVu Sans Condensed en 24 points, après avoir été traité par lafmt
commande, qui, dans son mode de fonctionnement par défaut, reformatera son entrée par habillage de mots sur une largeur de 75 colonnes. (Sauf s'il existe de longues chaînes continues de plus de 75 caractères, comme les URL, auquel cas elles s'étendent.)Une fois
fmt
le texte reformaté, il sera transmis àconvert
qui rendra ensuite lafmt
sortie canalisée , comme s'il lisait directement le fichier. (La spécification d'un nom de fichier-
est un raccourci de shell UNIX assez courant pour "lire à partir de l'entrée standard, au lieu de n'importe quel fichier de disque nommé", et les outils ImageMagick suivent cette convention.)la source
annotate
argument doit être plus grande que la taille des points pour être sûr que tout apparaît:convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 123 -fill black \ -annotate +0+123 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
où123
est la taille souhaitée. En outre, vous pouvez utiliserconvert -list font
pour savoir quelles polices sont prises en charge ("FreeMono"
n'est pas universellement pris en charge).convert -list font
la syntaxe est-elle correcte, nonconvert -list fonts
./etc/ImageMagick-7/policy.txt
qui interfère avec l'un de ces formulaires de conversion. Savez-vous quelle stratégie bloque la conversion et pourquoi elle est définie? (Aussi, saisir les pailles: lafmt ...
forme canalisée de la commande fonctionne-t-elle, par hasard? Si oui, vous pouvez simplement la remplacerfmt
parcat
, et obtenir le même résultat que la@ascii.txt
version.)convert
réussit lorsque vous utilisez le-draw
formulaire de @ garethTheRed et insérez les commandes de positionnement dans leascii.txt
fichier? Ce serait assez bizarre si tel est le cas, me semble-t-il, car j'ai du mal à imaginer les problèmes de sécurité-annotate
qui ne s'appliqueraient pas également-draw
lorsque je travaille sur le contenu d'un fichier texte importé./etc/ImageMagick-6/policy.xml
contient<policy domain="path" rights="none" pattern="@*"/>
donc je suppose que c'est celui-là. stdin ne fonctionne pas non plus, probablement parce qu'il contient également le@-
motif. Pour les désespérés,"$(cat ascii.txt)"
fonctionne s'il ne fait pas exploser la longueur de la CLI.