端末アプリケーションの出力を画像に変換するには?

端末アプリケーションの出力を画像に変換するには?

CLIアプリケーションがmy_bin端末でカラーテキスト、Unicodeシンボル、絵文字を含む出力を生成するとします。

Ubuntuで出力をsvgまたは画像に変換するには?

たとえば、curl "v2.wttr.in/Berlin"端末の出力は次のようになります。

コマンド出力

画像ファイル(ベクトル画像ファイル、png、svgなど)にどのように変換しますか?

修正する:

  • 実際には、ターミナルウィンドウでコマンド出力をレンダリングする必要がないソリューションが必要です。したがって、ビューをキャプチャするためにXまたはWaylandを使用せずにバックグラウンドで動作する必要があります。

  • これを試しましたcurl "v2.wttr.in/Berlin" | pbmtext | pnmtopng > out.png
    。色や絵文字はレンダリングされません。

  • 試してみてください。pango-view --font='mono' -qo out.png <(curl v2.wttr.in/Berlin)
    絵文字はレンダリングされますが、色のターミナルエスケープコードはレンダリングされません。

答え1

wttr.in 著者はここにあります。

まず、wttr.in出力を画像にのみ変換したい場合は、wttr.in自体にPNGフロントエンドがあるため、作業は簡単です。これを使用するには、.pngクエリの末尾に追加するだけです。

wget v2.wttr.in/Berlin.png

ターミナル出力をPNGに変換したい場合、操作はより複雑で、解決策はいくつかの要因によって異なります。

  1. カラーサポートが必要ですか?
  2. それでは、いくつの色をサポートする必要がありますか? (ANSIカラーコーディングにはいくつかの方法があります)
  3. 絵文字のサポートが必要ですか?
  4. どのスクリプトをサポートしたいですか?ただラテン語かそれ以上ですか?
  5. 組み込み端末グラフィックサポートが必要ですか?

簡単な場合、ここにあるすべての質問に対する答えは次のとおりです。いいえ、非常にシンプルでこれを行うことができるプログラムがたくさんあります。

逆に、できるだけ多くのサポートを提供したい場合は、作業がかなり複雑になる可能性があります。 wttr.inでこれを解決するために、私はサンスクリット語やアラビア語などのいくつかの複雑な東洋のスクリプトを除いて、1、2、3、4をサポートするカスタムレンダリングエンジンを作成しました。グラフィック操作にはPILを使用し、仮想端末のレンダリングにはpyteを使用してPythonとして実装されます。 wttr.inソースコードにあります。

https://github.com/chubin/wttr.in/blob/master/lib/fmt/png.py

関連情報