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ピクセルしかない実際の画面ではそうではありません。