extern crate scrap; use scrap::{Capturer, Display}; use std::fs::File; use std::io::prelude::*; use image_encoder::png; fn main() { let display = Display::primary().expect("Couldn't find primary display."); let mut capturer = Capturer::new(display).expect("Couldn't begin capture."); let (width, height) = (capturer.width(), capturer.height()); let frame = capturer.frame().unwrap(); let mut bitflipped = Vec::with_capacity(width * height * 4); let stride = frame.len() / height; for y in 0..height { for x in 0..width { let i = stride * y + 4 * x; bitflipped.extend_from_slice(&[frame[i + 2], frame[i + 1], frame[i], 255]); } } let image = png::Image::new(&bitflipped, width as u32, height as u32); let mut file = File::create("output.png").unwrap(); image.encode_into(&mut file).unwrap(); file.flush().unwrap(); }