Rubyプログラムのカラーターミナル出力をpngファイルとして保存したいです。出力が画面の高さに合わないため、スクロールできます。スクロール可能な端末ウィンドウ領域(もちろん、見えている部分だけでなく、少し上にスクロールする部分)の全部または一部をpngファイルとして保存できますか?
答え1
限られたサイズの実際の画面を使用する必要はありません。すべての出力を一度に表示するのに十分な大きさの仮想画面を作成し、その画面または端末をダンプします。たとえば、
$ Xvfb :1 -screen 0 100x4000x24 -noreset &
$ xterm -geometry 10x200 -display :1 -e \
sh -c 'echo $WINDOWID >/tmp/id;ls -l /etc;sleep 99' &
$ DISPLAY=:1 convert x:$(cat /tmp/id) /tmp/out.png
$ identify /tmp/out.png
/tmp/out.png PNG 79x2604 ...
これにより、100 x 4000ピクセル、高さ200行の画面が作成されますxterm
。このWINDOWID
変数はエクスポートされ、xterm
ImageMagickconvert
プログラムに提供され、画像をpngファイルにコピーできます。このidentify
コマンドはすべてがxterm
キャプチャされたことを示していますが、1080ピクセルしかない実際の画面ではそうではありません。
答え2
私はチュートリアル用に記録されたセッションを作成するためにasciienma.org(以前のascii.io)を使用しており、端末に作業を含める/共有する必要があります。録音内容は.cast形式で保存およびダウンロードでき、これを.gif形式に変換できます。
.castファイルを.gifに変換するには、このプロジェクトを使用します。asciicast2gif。結果は次のとおりです。