Pipe STDOUT zu einem Bild?

389
rjh427

Kürzlich wollte ich einen Terminalbefehl wie "git show <hash>" ausführen und die Ausgabe in einem Bild speichern, vorzugsweise in einer PNG-Datei.

Ich googelte ein bisschen und fand einige nette Tricks, vor allem mit dem Importbefehl, aber nichts, was STDOUT zuverlässig einfangen und als Bild speichern könnte.

Also dachte ich, ich würde das Gehirn hier fragen. Hat jemand eine getestete und überprüfte Lösung für Linux?

1
Nur um es klar zu sagen: Sie möchten, dass der Text als Bild dargestellt wird (also wenn Sie sich das ansehen, können Sie den Text lesen), richtig? Weil die Antworten dafür komplizierter sein könnten als "Ich möchte, dass die ASCII- / Unicode-Bytes des Texts Bytes der Bilddatei werden, obwohl sie ein Bild erzeugen, das wie zufällige / beschädigte / garbage-Pixel aussieht" oder " Ich möchte, dass die ASCII- / Unicode-Bytes des Texts in den Metadaten oder in einem versteckten Feld des Bilddateiformats gespeichert werden. " Spiff vor 6 Jahren 1
Rendern Sie diese Ausgabe als lesbaren Text, ja. Wenn möglich, wird die Farbe beibehalten, da in meiner .bashrc-Datei "force_color_prompt = yes" festgelegt ist. Ich kann jedoch versuchen, diese Einstellung vorübergehend umzukehren, wenn dies einen Unterschied macht. rjh427 vor 6 Jahren 0

2 Antworten auf die Frage

2
Tonny

Wie Sie Text in ein Bild konvertieren, wurde hier bereits beantwortet: https://stackoverflow.com/questions/3826379/image-magick-converting-text-to-image-is-there-away-to-center-the -text-to-t Diese Antwort bietet verschiedene Varianten, wie Sie dies mit den ImageMagick-Tools tun.

Bitte beachten Sie: Dies funktioniert nur dann zuverlässig, wenn die Ausgabe Ihres Befehls Nur-Text ist.
Wenn es irgendeine Art von ausgefallener Formatierung gibt (wie Nicks), können die Ergebnisse ziemlich unvorhersehbar sein.

Konvertieren Sie, ja. Ich habe ein paar Dinge damit ausprobiert und konnte keines davon überhaupt zur Arbeit bringen. Vermutlich, weil ich in meiner .bashrc-Datei "force_color_prompt = yes" gesetzt habe und diese fantastische Formatierungssache, die Sie erwähnt haben. rjh427 vor 6 Jahren 0
0
dirkt

Teilweise Antwort mit einigen Möglichkeiten:

Es gibt eine Reihe von Programmen, mit denen Sie Text in Bilder rendern können, zum Beispiel:

  • convert von ImageMagick / GraphicsMagick
  • pbmtext von NetPBM, wird zu Portable Bitmap gerendert
  • paps, wird mit Pango zu Postscript übertragen
  • enscript, rendert zu Postscript

Das Konvertieren eines anderen Formats in PNG sollte jedoch kein Problem sein.

Davon werden nur enscriptFarben über "spezielle Fluchten" unterstützt. Dies ist nicht dasselbe wie das Terminal-Escape, also konvertiert man es mit awk / perl usw.

Eine andere Möglichkeit ist, das Ganze in einem Xterm und einem Screenshot zu rendern.

Wie Sie sehen können, sind all dies ziemlich kompliziert und erfordern nach Belieben nicht-triviale Anstrengungen, um sie zum Laufen zu bringen. Kein Wunder, denn Sie möchten grundsätzlich den gesamten Rendering-Teil Ihres Terminals replizieren.

Es ist möglicherweise einfacher, die Ausgabe selbst zu speichern und in einem Terminal abzurufen, wenn Sie sie sehen möchten.

Es ist also definitiv nicht trivial, wie ich erkannt habe. Bitmaps würden funktionieren, sind aber nicht so ansprechend, da sie nicht komprimiert sind. Das Speichern als Postscript kann einige wünschenswerte Optionen bieten. Ziel ist es, die Git-Show zu erhaltenAusgabe in einer Form, die mit anderen geteilt werden kann (think portfolio). Oder vielleicht gibt es eine noch bessere Option, an die ich noch nicht gedacht habe. rjh427 vor 6 Jahren 0
Wie gesagt, das endgültige Format ist nicht das Problem - Sie können frei von PBM in PNG oder in einem letzten Schritt von Postscript nach PNG konvertieren. Das Hauptproblem ist das Rendern von Text mit Farbübergängen. * Die Erhaltung der * git show-Ausgabe kann durch einfaches Speichern in einer Datei mit `git show> xxx` oder` git show --pretty = blah> xxx 'erfolgen. Wenn Sie es für eine Art Lebenslauf benötigen, ist die Konvertierung in Befehle, die Ihr Textverarbeitungssystem benötigt, erheblich einfacher als die Umwandlung in ein Bild. dirkt vor 6 Jahren 0