https://github.com/quadrupleslap/scrap
📸 Screen capture made easy!
https://github.com/quadrupleslap/scrap
capture cross-platform nonblocking rust screen
Last synced: 9 months ago
JSON representation
📸 Screen capture made easy!
- Host: GitHub
- URL: https://github.com/quadrupleslap/scrap
- Owner: quadrupleslap
- Created: 2017-06-10T16:21:13.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-05-16T14:20:52.000Z (over 4 years ago)
- Last Synced: 2025-05-05T07:55:25.110Z (9 months ago)
- Topics: capture, cross-platform, nonblocking, rust, screen
- Language: Rust
- Homepage: https://crates.io/crates/scrap
- Size: 51.8 KB
- Stars: 620
- Watchers: 8
- Forks: 70
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# scrap
Scrap records your screen! At least it does if you're on Windows, macOS, or Linux.
## Usage
```toml
[dependencies]
scrap = "0.5"
```
Its API is as simple as it gets!
```rust
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;
/// Try to get a frame.
/// Returns WouldBlock if it's not ready yet.
pub fn frame<'a>(&'a mut self) -> io::Result>;
pub fn width(&self) -> usize;
pub fn height(&self) -> usize;
}
impl Display {
/// The primary screen.
pub fn primary() -> io::Result;
/// All the screens.
pub fn all() -> io::Result>;
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