node-screenshots
这个库是一个原生的 Node.js 桌面屏幕截图库。
与许多其他截图库不同,node-screenshots
的核心特点是它能够直接与操作系统交互来捕获整个屏幕、特定显示器或单个应用程序窗口的图像,而不是像 Puppeteer 或 Playwright 那样通过控制一个无头浏览器来截取网页内容。
简单来说,它的主要用途就是让你用 Node.js 程序来**"截取用户电脑屏幕上的内容"**。
node-screenshots
的核心功能和特点:
-
原生实现,零外部依赖 :它基于 Rust 编写的
XCap
库构建,并编译为原生的 Node.js 插件。这意味着在运行时,它不需要依赖像 ImageMagick 或其他系统工具,让部署和使用更加简单。 -
跨平台支持 :它可以在多种主流操作系统上工作,包括 macOS、Windows 和 Linux。
-
功能全面:它提供了丰富的 API 来满足不同的截图需求:
- 获取所有显示器信息 (
Monitor.all()
): 可以列出连接到系统的所有显示器及其分辨率、位置等信息。 - 截取特定显示器 (
monitor.captureImage()
): 可以精确地只截取某个显示器的内容。 - 获取所有窗口信息 (
Window.all()
): 可以列出当前打开的所有应用程序窗口。 - 截取特定窗口 (
window.captureImage()
): 可以只截取某个特定程序(如记事本、浏览器)的窗口图像,而不会包含桌面背景和其他窗口。 - 同步与异步API :对于截图操作,同时提供了同步 (
captureImageSync
) 和异步 (captureImage
) 两种方法,方便在不同场景下使用。
- 获取所有显示器信息 (
node-screenshots
通常用来做什么?
由于其能够直接捕获桌面和窗口的能力,它非常适用于以下类型的应用:
- 远程控制或远程协助软件:需要实时获取远程用户的屏幕内容以进行协助或演示。
- 监控和记录工具:可以用于开发员工监控软件或用于记录用户操作以进行问题排查和复现。
- 自动化测试:在某些场景下,需要验证桌面应用程序的UI是否正确显示,可以用它来截图并进行图像比对。
- 教学或演示工具:开发需要实时分享屏幕内容的工具。
- 快速截图和标记应用:可以作为桌面截图工具(类似 Snipaste 或系统自带截图)的后端核心功能。
与其他截图库的区别
库/工具 | 主要用途 | 工作方式 |
---|---|---|
node-screenshots |
截取桌面、显示器、应用窗口 | 通过原生系统API直接与操作系统交互 |
Puppeteer / Playwright | 截取网页内容 | 启动并控制一个真实的浏览器内核(如Chromium)来渲染网页并截图 |
html2canvas / dom-to-image |
将网页DOM元素转换为图像 | 在浏览器前端,通过读取DOM结构和样式,在 <canvas> 上重新绘制 |
总之,如果你想用 Node.js 开发一个需要获取用户真实桌面或特定程序窗口画面 的应用,node-screenshots
是一个非常强大和合适的选择。而如果你只是想截取某个网站页面的样子,那么 Puppeteer 或 Playwright 会是更合适的工具。