Changes
- feat: 修改ci @nashaofu (#60)
Full Changelog: https://github.com/nashaofu/node-screenshots/compare/v0.2.7...v0.2.8
零依赖的 Node.js 原生截图库,支持 Mac、Windows、Linux 三平台,用 Rust 实现,适合在服务端或桌面应用中直接调用系统能力截屏。
Zero-dependent. A native nodejs screenshots library for Mac、Windows、Linux.
README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。
README 没有说明硬件要求。
这个项目的说明还在生成中,先参考下面「最近发版」和 README。
Full Changelog: https://github.com/nashaofu/node-screenshots/compare/v0.2.7...v0.2.8
Full Changelog: https://github.com/nashaofu/node-screenshots/compare/v0.2.6...v0.2.7
Full Changelog: https://github.com/nashaofu/node-screenshots/compare/v0.2.5...v0.2.6
这个版本没有写更新说明。
Full Changelog: https://github.com/nashaofu/node-screenshots/compare/v0.2.3...v0.2.4
还没有人点评。第一个说出真实体验的人最有价值。
node-screenshots is a native node.js screenshot library based on XCap, It supports Mac, Windows, and Linux systems without any dependencies. node-screenshots supports screenshot and video recording (to be implemented).
English | 简体中文
| Operating System | node16 | node18 | node20 |
|---|---|---|---|
| Windows x64 | ✓ | ✓ | ✓ |
| Windows x32 | ✓ | ✓ | ✓ |
| Windows arm64 | ✓ | ✓ | ✓ |
| macOS x64 | ✓ | ✓ | ✓ |
| macOS arm64 | ✓ | ✓ | ✓ |
| Linux x64 gnu | ✓ | ✓ | ✓ |
| Linux x64 musl | ✓ | ✓ | ✓ |
| Linux arm64 gnu | ✓ | ✓ | ✓ |
| Linux loongarch64 | ✓ | ✓ | ✓ |
const fs = require('fs')
const { Monitor } = require('node-screenshots')
let monitor = Monitor.fromPoint(100, 100)
console.log(monitor, monitor.id())
let image = monitor.captureImageSync()
fs.writeFileSync(`${monitor.id()}-sync.png`, image.toPngSync())
monitor.captureImage().then((data) => {
console.log(data)
fs.writeFileSync(`${monitor.id()}.jpeg`, data.toJpegSync())
})
const monitors = Monitor.all()
monitors.forEach((item) => {
console.log(
'Monitor:',
item.id(),
item.name(),
[item.x(), item.y(), item.width(), item.height()],
item.rotation(),
item.scaleFactor(),
item.frequency(),
item.isPrimary(),
)
})
const fs = require('fs')
const { Window } = require('node-screenshots')
let windows = Window.all()
windows.forEach((item) => {
console.log({
id: item.id(),
x: item.x(),
y: item.y(),
y: item.z(),
width: item.width(),
height: item.height(),
rotation: item.rotation(),
scaleFactor: item.scaleFactor(),
isPrimary: item.isPrimary(),
})
let image = item.captureImageSync()
fs.writeFileSync(`${item.id()}-sync.bmp`, image.toBmpSync())
item.captureImage().then(async (data) => {
console.log(data)
let newImage = await data.crop(10, 10, 10, 10)
fs.writeFileSync(`${item.id()}.png`, await newImage.toPng())
})
})
Full typeScript type definition: index.d.ts
static all(): Array<Monitor>: Get all monitorstatic fromPoint(x: number, y: number): Monitor | null: Get a monitor from the specified coordinatescaptureImageSync(): Image: Synchronously capture imagecaptureImage(): Promise<Image>: Asynchronously capture imagestatic all(): Array<Window>: Get all windowcaptureImageSync(): Image: Synchronously capture imagecaptureImage(): Promise<Image>: Asynchronously capture imagecropSync(x: number, y: number, width: number, height: number): Image: Synchronously crop imagecrop(x: number, y: number, width: number, height: number): Promise<Image>: Asynchronously crop imagetoPngSync(copyOutputData?: boolean | undefined | null): Buffer:Synchronously Convert to pngtoPng(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to pngtoJpegSync(copyOutputData?: boolean | undefined | null): Buffer: Synchronously Convert to jpegtoJpeg(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to jpegtoBmpSync(copyOutputData?: boolean | undefined | null): Buffer: Synchronously Convert to bmptoBmp(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to bmptoRawSync(copyOutputData?: boolean | undefined | null): Buffer: Synchronously Convert to raw(RGBA data)toRaw(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to raw(RGBA data)copyOutputData: pass related parameters in electron, otherwise electron will crash, nodejs does not pass or passes false, performance will be better, for more information refer to https://github.com/napi-rs/napi-rs/issues/1346
On Linux, you need to install libxcb, libxrandr, and dbus.
Debian / Ubuntu:
apt-get install libxcb1 libxrandr2 libdbus-1-3
Alpine:
apk add libxcb libxrandr dbus