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
ImageMagick convert
프로그램에 제공되어 이미지를 png 파일로 복사할 수 있습니다. 이 identify
명령은 모든 것이 xterm
캡처되었음을 보여 주지만 1080픽셀만 있는 실제 화면에서는 그렇지 않습니다.
답변2
나는 튜토리얼용으로 녹화된 세션을 생성하기 위해 asciienma.org(이전의 ascii.io)를 사용해 왔으며 터미널에 작업을 포함/공유해야 합니다. 녹음 내용은 .cast 형식으로 저장 및 다운로드할 수 있으며, 이를 .gif 형식으로 변환할 수 있습니다.
.cast 파일을 .gif로 변환하려면 이 프로젝트를 사용합니다.asciicast2gif. 결과는 다음과 같습니다.