12 unstable releases (5 breaking)

Uses old Rust 2015

0.5.0 Apr 8, 2018
0.4.0 Jan 4, 2018
0.3.2 Jul 16, 2017
0.3.0 Jun 25, 2017
0.0.2 Jun 21, 2017

#443 in Images

Download history 254/week @ 2024-06-17 215/week @ 2024-06-24 51/week @ 2024-07-01 171/week @ 2024-07-08 266/week @ 2024-07-15 258/week @ 2024-07-22 238/week @ 2024-07-29 255/week @ 2024-08-05 325/week @ 2024-08-12 218/week @ 2024-08-19 310/week @ 2024-08-26 251/week @ 2024-09-02 220/week @ 2024-09-09 241/week @ 2024-09-16 416/week @ 2024-09-23 361/week @ 2024-09-30

1,263 downloads per month
Used in 10 crates

MIT license

50KB
1.5K SLoC

scrap

Scrap records your screen! At least it does if you're on Windows, macOS, or Linux.

Usage

[dependencies]
scrap = "0.5"

Its API is as simple as it gets!

struct Display; /// A screen.
struct Frame; /// An array of the pixels that were on-screen.
struct Capturer; /// A recording instance.

impl Capturer {
    /// Begin recording.
    pub fn new(display: Display) -> io::Result<Capturer>;

    /// Try to get a frame.
    /// Returns WouldBlock if it's not ready yet.
    pub fn frame<'a>(&'a mut self) -> io::Result<Frame<'a>>;

    pub fn width(&self) -> usize;
    pub fn height(&self) -> usize;
}

impl Display {
    /// The primary screen.
    pub fn primary() -> io::Result<Display>;

    /// All the screens.
    pub fn all() -> io::Result<Vec<Display>>;

    pub fn width(&self) -> usize;
    pub fn height(&self) -> usize;
}

impl<'a> ops::Deref for Frame<'a> {
    /// A frame is just an array of bytes.
    type Target = [u8];
}

The Frame Format

  • The frame format is guaranteed to be packed BGRA.
  • The width and height are guaranteed to remain constant.
  • The stride might be greater than the width, and it may also vary between frames.

System Requirements

OS Minimum Requirements
macOS macOS 10.8
Linux XCB + SHM + RandR
Windows DirectX 11.1

Dependencies

~135KB