如何截取基于文本的用户界面的屏幕截图?

Posted

技术标签:

【中文标题】如何截取基于文本的用户界面的屏幕截图?【英文标题】:How do I take a screenshot of a Text-Based User Interface? 【发布时间】:2021-09-06 09:22:34 【问题描述】:

我有一个基于文本的用户界面 (TUI) 的程序。想想ncurses。一切都显示在终端中,并且使用了很多 ANSI 转义序列来显示颜色、滚动条、窗口等...

对于单元测试,我想拍摄 TUI 的“屏幕截图”并将它们与预期的屏幕截图进行比较。本质上,单元测试需要运行一个虚拟终端并将输出保存为 png 图像文件。

请记住,这些测试需要在 travis 或 circleci 等无头 CI 系统上运行。我不能简单地运行 gnome-terminal 并使用 gnome-screenshot 截屏。 CI 系统没有运行图形。

如何以编程方式截取“无头”系统上基于文本的用户界面的屏幕截图?

【问题讨论】:

使用“screen”命令,如下所述:superuser.com/questions/557300/… 【参考方案1】:

也许您可以尝试使用帧缓冲区截屏,这是一个示例: https://github.com/GunnarMonell/fbgrab

【讨论】:

这看起来很有希望。在 LInux 上,/dev/fb 包含原始 RGB 字节的帧缓冲区。将其转换为图像是一种非常简单的算法。

以上是关于如何截取基于文本的用户界面的屏幕截图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ionic/cordova/phonegap 中的布局截取屏幕截图?

如何更快地截取 UIView 截图?

避免 printscreen 函数渲染文本

如何截取完整桌面Windows c#的屏幕截图[关闭]

在 Silverlight 3 中截取当前用户控件或任何 GUI 的屏幕截图

如何在 Ruby 中使用 Selenium webdriver 截取警报的屏幕截图?