Skip to content

Zero-dependent. A native nodejs screenshots library for Mac、Windows、Linux.

License

Notifications You must be signed in to change notification settings

nashaofu/node-screenshots

Repository files navigation

📸 node-screenshots

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 | 简体中文

Support Matrix

Operating System

Operating System node16 node18 node20
Windows x64
Windows x32
Windows arm64
macOS x64
macOS arm64
Linux x64 gnu
Linux x64 musl

Example

Monitor

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(),
  )
})

Window

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())
  })
})

API

Full typeScript type definition: index.d.ts

Monitor

  • static all(): Array<Monitor>: Get all monitor
  • static fromPoint(x: number, y: number): Monitor | null: Get a monitor from the specified coordinates
  • captureImageSync(): Image: Synchronously capture image
  • captureImage(): Promise<Image>: Asynchronously capture image

Window

  • static all(): Array<Window>: Get all window
  • captureImageSync(): Image: Synchronously capture image
  • captureImage(): Promise<Image>: Asynchronously capture image

Image

  • cropSync(x: number, y: number, width: number, height: number): Image: Synchronously crop image
  • crop(x: number, y: number, width: number, height: number): Promise<Image>: Asynchronously crop image
  • toPngSync(copyOutputData?: boolean | undefined | null): Buffer:Synchronously Convert to png
  • toPng(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to png
  • toJpegSync(copyOutputData?: boolean | undefined | null): Buffer: Synchronously Convert to jpeg
  • toJpeg(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to jpeg
  • toBmpSync(copyOutputData?: boolean | undefined | null): Buffer: Synchronously Convert to bmp
  • toBmp(copyOutputData?: boolean | undefined | null): Promise<Buffer>: Asynchronously Convert to bmp
  • toRawSync(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 napi-rs/napi-rs#1346

Linux System Requirements

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

Related Repositories

  • xcap - XCap is a cross-platform screen capture library written in Rust

About

Zero-dependent. A native nodejs screenshots library for Mac、Windows、Linux.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors 3

  •  
  •  
  •