BASH - Create Image from Text

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

BASH - Create Image from Text

Beitrag von speefak » 17.07.2023 17:06:25

Moin,
ich versuche nun seit über 6 Stunden vergeblich mit convert aus einer Textdatei ein Bild zu erstellen. Ich habe so ziemlich sämtliche befehle der letzten 10 Jahre zu dem Thema ausprobiert und es funktionierte leider nichts :oops: :oops: :oops: :oops:

Was unter Debian 10 halbwegs lief funktioniert unter Debian 12 dann wieder nicht mehr.

Ziel :

- Ein Bild soll aus einem Text erzeugt werden
- Der Text umfaßt mehrere Zeilen
- die Schrift soll mittig/mittig sein
- wenn möglich soll das Bild aus einer Funktionsausgabe des Scriptes erstellt werden.

Wie gesagt beiße ich hier gleich ins Keyboard da sämtliche Tutorials und Hilfen unter Debian nicht funktionieren :

Code: Alles auswählen

- ip a | convert label:@- myipaddress.png
=> ergibt ein 23x16 großen bild mit @-

Code: Alles auswählen

 convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black -draw @ascii.txt image.png
TrimStringNewLine
convert convert: Non-conforming drawing primitive definition (Testtext).

Code: Alles auswählen

convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
> -annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
convert convert: Unrecognized option (-annotate).

Code: Alles auswählen

ifconfig | convert -background black -fill white \
-font Helvetica -pointsize 14 \
-border 10 -bordercolor black \
label:@- cmd.png

Code: Alles auswählen

convert input_image -pointsize 20 -fill white -annotate +100+100 'Your Text Here' output_image 
convert convert: Unrecognized option (-annotate).

Code: Alles auswählen

convert -size 50X100 -font Baskerville font-size 24 -translate 10,10 -rotate 90 -draw "text 0,0 \"True\"" true.png
In zig Kombinationen mit Text Angabe, Dateiangabe etc - es funktioniert : NICHTS ! :oops: :oops: :oops:

Also wie kann ich aus einer Textdatei ein Bild erstellen ? Bitte Idiotensicher Schritt für Schritt erklären sonst finde ich meine Fehler nie.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: BASH - Create Image from Text

Beitrag von JTH » 17.07.2023 17:17:43

Das scheint was zu tun:

Code: Alles auswählen

convert label:"$(ip a)" myipaddress.png

Ich werf aber dazu ein, dass es meist eher unsinnig, unnötig aufgebläht, benutzerunfreundlich etc. ist, so eine Textausgabe als Bild weiterzugeben. Man kann Text ausm Bild nicht kopieren, nicht durchsuchen, sich nicht vorlesen lassen, schlechter ranzoomen, ein Bild lädt langsamer etc.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: BASH - Create Image from Text

Beitrag von Meillo » 17.07.2023 17:32:45

speefak hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 17:06:25
Ziel :

- Ein Bild soll aus einem Text erzeugt werden
- Der Text umfaßt mehrere Zeilen
- die Schrift soll mittig/mittig sein
- wenn möglich soll das Bild aus einer Funktionsausgabe des Scriptes erstellt werden.
Ist der Text denn schon gelayoutet? Soll er also genau so wie er im Editor angezeigt wird, auch im Bild erscheinen? Falls nicht, muss dies erst noch gemacht werden. `convert' uebernimmt das Layouten nicht.

Einfacher weil ueblicher als eine direkte Konvertierung von Text nach (Raster-)Bild ist es vermutlich, den Text in eine PDF- oder PS-Datei zu bringen und daraus dann ein Bild zu machen.

Btw: Wenn es um Rastergrafikern geht, hat der convert-Parameter `-density' mir oft weitergeholfen.

Das ist nun zwar keine fertige und idiotensichere Loesung, aber es sind immerhin ein paar vielleicht hilfreiche Gedanken dazu. ;-)


Nachtrag: Wenn du uns die Datei ascii.txt bereitstellen wuerdest, koennten wir uns besser vorstellen, wie das konkret aussieht. Momentan habe ich keine Ahnung, ob es zwei Zeilen oder fuenfzig sind, ob es zwanzig Zeichen pro Zeile oder hundert sind ... Auf einer so allgemeinen Basis ist es schwer, fuer ein solches, unuebliches Problem eine idiotensichere Anleitung beizutragen.
Use ed once in a while!

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: BASH - Create Image from Text

Beitrag von speefak » 17.07.2023 18:28:34

Es scheint 2 Pakete zu geben die den convert Befehl enthalten. lt. "command-not-found" wurde mir NICHT imagemagic-7 vorgeschlagen, welches Paket es war weis ich nicht mehr. Jedenfalls scheinen die convert Befehle nach der Installation von imagemagic-7 zu funktionieren.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: BASH - Create Image from Text

Beitrag von speefak » 17.07.2023 18:30:36

JTH hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 17:17:43
Das scheint was zu tun:

Code: Alles auswählen

convert label:"$(ip a)" myipaddress.png

Ich werf aber dazu ein, dass es meist eher unsinnig, unnötig aufgebläht, benutzerunfreundlich etc. ist, so eine Textausgabe als Bild weiterzugeben. Man kann Text ausm Bild nicht kopieren, nicht durchsuchen, sich nicht vorlesen lassen, schlechter ranzoomen, ein Bild lädt langsamer etc.
Am Thema vorbei ...

PS : deine und noch viel mehr Argumente sind mir bekannt aber in meinem Fall irrelevant, da die ausgaben als Wallpaper dargestellt werden sollen.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: BASH - Create Image from Text

Beitrag von speefak » 17.07.2023 18:36:33

Meillo hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 17:32:45
speefak hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 17:06:25
Ziel :

- Ein Bild soll aus einem Text erzeugt werden
- Der Text umfaßt mehrere Zeilen
- die Schrift soll mittig/mittig sein
- wenn möglich soll das Bild aus einer Funktionsausgabe des Scriptes erstellt werden.
Ist der Text denn schon gelayoutet? Soll er also genau so wie er im Editor angezeigt wird, auch im Bild erscheinen? Falls nicht, muss dies erst noch gemacht werden. `convert' uebernimmt das Layouten nicht.

Einfacher weil ueblicher als eine direkte Konvertierung von Text nach (Raster-)Bild ist es vermutlich, den Text in eine PDF- oder PS-Datei zu bringen und daraus dann ein Bild zu machen.

Btw: Wenn es um Rastergrafikern geht, hat der convert-Parameter `-density' mir oft weitergeholfen.

Das ist nun zwar keine fertige und idiotensichere Loesung, aber es sind immerhin ein paar vielleicht hilfreiche Gedanken dazu. ;-)


Nachtrag: Wenn du uns die Datei ascii.txt bereitstellen wuerdest, koennten wir uns besser vorstellen, wie das konkret aussieht. Momentan habe ich keine Ahnung, ob es zwei Zeilen oder fuenfzig sind, ob es zwanzig Zeichen pro Zeile oder hundert sind ... Auf einer so allgemeinen Basis ist es schwer, fuer ein solches, unuebliches Problem eine idiotensichere Anleitung beizutragen.

Scheint nun zu laufen, nachdem imagemagic-7 installiert ist.

Ein Script prüft Netzwerkfunktionen ( u.a. ob Server online sind etc. ) , sammelt die Infos in einer Textdatei und die soll alle 60sec als Wallpaper geladen werden.

Code: Alles auswählen


Server xyz => online
Server abc => offline
Server asd => unreachable from internet / LAN ok

Ist alles ok grüner Hintergrund, kritischer Fehler roter Hintergrund, sonstige Fehler gelber Hintergrund. Test ist nun auch zentriert ;)

Ich möchte auch von weiter weg direkt sehen wenn was nicht läuft. Textausgaben, Conky und co sind daher nicht optimal.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: BASH - Create Image from Text

Beitrag von Meillo » 17.07.2023 19:12:29

Heisst das nun, dass jetzt alles geht und das Problem nur war, dass auf dem neuen System ein Paket nicht installiert war?
Use ed once in a while!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: BASH - Create Image from Text

Beitrag von JTH » 17.07.2023 20:11:09

speefak hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 18:30:36
Am Thema vorbei ...
Wie du zitiert und dabei vielleicht gelesen hast, war der erste Teil meiner Antwort eine funktionierende Variante deines ersten Versuchs, abzüglich der Formatierung. Und ich schrieb nicht ohne Grund, dass Text-zu-Grafik „meist“ nicht die beste Idee sei – also nicht immer, aber manchmal …

Deinen Anwendungsfall kann ich nachvollziehen.


Nur der Vollständigkeit halber – für später hier Lesende:
speefak hat geschrieben: ↑ zum Beitrag ↑
17.07.2023 18:36:33
nachdem imagemagic-7 installiert ist.
Das ist dann aber keine Debian-Installation oder? (Ubuntu?) In den Debian-Repos gibt es nämlich (noch) kein imagemagick-7.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: BASH - Create Image from Text

Beitrag von speefak » 19.07.2023 12:39:31

Korrekt - es ist imagemagick-6 im D12 Repo ;)

Beim OS Upgrade schlägt mir das Paket "command-not-found" eigentlich immer die passenden Pakete vor wenn Befehl und Paketname abweichen ( geoip z.B. ). Verwirrend war, dass command- not-found ein anderes Paket mit dem convert Befehl vorgeschlagen hat und nicht imagemagic-6.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: BASH - Create Image from Text

Beitrag von Meillo » 19.07.2023 20:38:55

speefak hat geschrieben: ↑ zum Beitrag ↑
19.07.2023 12:39:31
Verwirrend war, dass command- not-found ein anderes Paket mit dem convert Befehl vorgeschlagen hat und nicht imagemagic-6.
Es ist prinzipiell moeglich, dass unterschiedliche Pakete ein gleichlautendes Programm anbieten. Typisch ist das beispielsweise bei Mailservern, die alle ein `sendmail' beinhalten, aus Kompatibilitaetsgruenden. Diese Pakete muessen dann gegenseitig als Konflikt gelistet werden.

`convert' ist ein so allgemeiner Befehlsname, dass es nicht verwundert, dass mehrere Pakete ihn beinhalten. `command-not-found' kann nur raten, welches das richtige Paket ist. Wie es das tut, weiss ich nicht. (Es scheint als ob es nicht die Popcon-Daten auswertet.)
Use ed once in a while!

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: BASH - Create Image from Text

Beitrag von tobo » 19.07.2023 21:51:52

speefak hat geschrieben: ↑ zum Beitrag ↑
19.07.2023 12:39:31
Korrekt - es ist imagemagick-6 im D12 Repo ;)

Beim OS Upgrade schlägt mir das Paket "command-not-found" eigentlich immer die passenden Pakete vor wenn Befehl und Paketname abweichen ( geoip z.B. ). Verwirrend war, dass command- not-found ein anderes Paket mit dem convert Befehl vorgeschlagen hat und nicht imagemagic-6.
/usr/bin/convert ist ein link und kommt (beispielhaft auf Bullseye) von:

Code: Alles auswählen

$ apt-file search "^`which convert`$" -x
graphicsmagick-imagemagick-compat: /usr/bin/convert
$
Allerdings greift hier das Alternativensystem von Debian:

Code: Alles auswählen

$ ls -l `which convert`
lrwxrwxrwx 1 root root 25 2022-10-16 16:34 /usr/bin/convert -> /etc/alternatives/convert
$ update-alternatives --config convert
There is only one alternative in link group convert (providing /usr/bin/convert): /usr/bin/convert-im6.q16
Nothing to configure.
$ apt-file search /usr/bin/convert-im6.q16$ -x
imagemagick-6.q16: /usr/bin/convert-im6.q16
$
Wenn du da also mehrere converts zur Auswahl hast (sofern überhaupt möglich), dann kannst du das mit

Code: Alles auswählen

# update-alternatives --config convert
einstellen.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: BASH - Create Image from Text

Beitrag von speefak » 22.07.2023 09:16:41

update-alternatives --config convert ... Das wurde beim Installieren von imagemagic ebenfalls ausgeführt. Sendmail .... Stimmt - da hätte ich mit convert und den alternativen selbst drauf kommen können :facepalm: ( hatte sowas mit sendmail schon mal ).

in dem Sinne danke für die Infos ;)

Antworten