Gibt es ein Befehlszeilenprogramm (für Linux), das ein Bild in ASCII-Art konvertieren und diese Ausgabe dann als Bild speichern kann, z. B. JPG oder PNG?
Um zu veranschaulichen, was ich brauche, möchte ich das Bild unten in ASCII-Kunst umwandeln
Die Ausgabe, die ich mir von einem Programm wünsche, sollte dieser ähneln, die durch Erstellen eines Screenshots der Ausgabe eines Bild-zu-ASCII-Konverters erstellt wurde (die Ausgabe war reiner Text).
Mir ist bewusst, dass GIMP ein Bild als ASCII-Grafik speichern kann und dass Aview ein Bild auch in ASCII konvertieren kann. Ersteres kann jedoch nicht über die Befehlszeile ausgeführt werden, und mit letzterem können Sie die Ausgabe nur anzeigen, nicht speichern (ich möchte nicht auf einen Screenshot der Ausgabe zurückgreifen).
Mir ist auch bewusst, dass libcaca seine Ausgabe in einem Bild speichern kann, aber es gibt nur farbiges ASCII aus, wie unten.
Hergestellt durch Konvertieren des Quellbildes in Graustufen und dann mit dem folgenden Befehl:
img2txt -W 70 -f tga input.jpg > output.tga
Der Grund für den Wunsch nach einem Befehlszeilenprogramm ist die Stapelverarbeitung eines Ordners voller Bilder.
Falls Sie anscheinend Linux verwenden, können Sie die Anwendungen einfach zusammenfügen, um das gewünschte Ergebnis zu erzielen. Dies kann dann auch in Ihr Stapelverarbeitungsskript eingebaut werden.
Das folgende Beispiel verwendet jp2a , einen leistungsstarken JPG-zu-ASCII-Art-Konverter mit vielen Optionen, um die gewünschten Ergebnisse zu erzielen (siehe Manpage). Anschließend verarbeiten wir die resultierende ASCII-Textdatei mit convert aus der ImageMagick-Suite zu einem Bild weiter . Auch hier gibt es viele Möglichkeiten, das Ergebnis zu verfeinern. Beide Anwendungen sind wahrscheinlich in den Repositories Ihrer Distribution verfügbar.
Das folgende Beispielskript erzeugt ein ASCII-Art-Bild (das Format ist abhängig von der von uns angegebenen Erweiterung .jpg
für JPEG) aus einem eingegebenen JPEG-Bild. Die Quelle wird auf 160 Zeichenbreite bei 6 pt gerendert. Dies passt dann gerade auf die von convert vordefinierte Standardseitengröße.
#! /bin/bash
#Usage ./j2asc infile.jpg outfile.jpg
echo "converting $1 to $2"
jp2a --width=160 -i $1 --output=tmp.txt
convert -font Courier -pointsize 6 tmp.txt $2
835px
? Ich möchte die ASCII-Kunst in ein 1920x1080
Hintergrundbild konvertieren, aber wenn ich die -resize 1920x1080
Option übergebe, bleibt die Breite bei 835px
.brew install jp2a
.jp2a --html --width=160 --chars="\'\"love" input.jpg --output=output.htm
. Sie können Ihren bevorzugten Zeichensatz für das Rendering angeben (Sie müssen Metazeichen maskieren, wenn Sie sie verwenden möchten). Für jp2a siehe auch AUR für Arch .jp2a --width=160 -i "$1"
usw.Sie können diesen von mir erstellten Python-Code verwenden , um ASCII-Grafiken aus Standbildern und Videos zu erstellen:
https://gist.github.com/lindylex/9374326
Beispielausgabe
Original
ASCII-Kunstausgabe ( python ascii_movie_image_ver_1.py cat.jpg 4 10
)
from PIL import Image
und import Image
. Und import ImageOps
anstelle von from PIL import ImageOps
). Ich habe Gist erstellt , um dies zu beheben.Sie scheinen Linux zu verwenden und kennen libcaca bereits. Es gibt eine andere Bibliothek, die genau das tut, was Sie sagen (Image to Ascii auf der Befehlszeile): Aalib .
Es gibt viele Programme, die dies tun. Dieser funktioniert sowohl unter Linux als auch unter Windows . Verwendet keine externen Bibliotheken, vollständiger Quellcode verfügbar, etc...
In Node.js Knockout 2012 gab es eine Gewinnereinreichung, die einen Webcam-Video-Feed nahm und einen „ASCII-Feed“ ausspuckte:
Asciigram ist ein "Produktivitätstool", mit dem Sie ASCII-Videos und -Bilder mit Ihrer Webcam erstellen können. Sie können auch ASCII-Bilder erstellen, indem Sie Bilder auf die Seite ziehen. [Verknüpfung]
Es ist nicht gerade eine Befehlszeile, aber vielleicht können Sie es für Ihre Bedürfnisse nachrüsten. Die Bibliothek, die sie verwenden, um das Bild in ASCII umzuwandeln, heißt Jscii .
Soweit mir bekannt ist, dass das Programm keine Befehlszeilenschnittstelle hat, konvertiert es Bilder in Text und dann in Bilder. Die Quelle ist verfügbar, sodass Sie sie verwenden können, um Ihr eigenes Tool zu schreiben.
Sie haben Recht, aalib gibt keine Bilder aus, aber es gibt Text aus. Sowie viele andere Programme, die auf der Kommandozeile arbeiten.
Wenn Sie Linux verwenden, gibt es ein Befehlszeilenprogramm namens asciitopgm, das ASCII-Text in eine Bitmap konvertiert. Es ist Teil des netpbm-Pakets.
Sie können also eine Kombination von Tools verwenden:
Ich denke, Sie können auf diese Weise tun, was Sie wollten.
Ich weiß, es ist etwas spät, aber ich dachte, ich poste das trotzdem, falls hier zufällig jemand reinstolpert 😅
Sie können ein CLI-Tool verwenden, das ich kürzlich erstellt habe, ascii-image-converter
. Es ist auf Snap verfügbar:
sudo snap install ascii-image-converter
Oder Sie können das Repo besuchen, wenn Sie direkt die Binärdateien oder etwas anderes möchten: https://github.com/TheZoraiz/ascii-image-converter#installation
Es unterstützt derzeit die Bildformate jpeg, png, webp, bmp und tiff, sodass es mit den meisten Bildern funktioniert, auf die Sie stoßen.
Es deckt alle Ihre Anwendungsfälle ab und kann ASCII-Kunst als PNG-Bild speichern. Dieser Befehl würde das ASCII-Kunstbild drucken und im selben Verzeichnis speichern:
ascii-image-converter myImage.jpeg -s .
Es gibt eine Reihe weiterer Flags für weitere Anpassungen, einschließlich der Bereitstellung Ihres eigenen ASCII-Zeichensatzes für die Zuordnung. Sie können die Dokumentation für weitere Details lesen . Ich arbeite daran, es zu verbessern und neue Funktionen zu integrieren. Versuche es! :)
Horatio
convert
(ImageMagick) weiterzuleiten. Wenn Sie die Ausgabe -f von img2txt auf ansi setzen (statt auf farbiges Ansi), können Sie das Ergebnis an die Konvertierung (oder andere geeignete Software) weiterleiten.Takkat
Ciro Santilli OurBigBook.com