use core_graphics::display::CGDisplay; fn main() { let display = CGDisplay::main(); let image = display.image().expect("Failed to capture screen"); println!("CGImage properties:"); println!(" Width: {}", image.width()); println!(" Height: {}", image.height()); println!(" Bits per component: {}", image.bits_per_component()); println!(" Bits per pixel: {}", image.bits_per_pixel()); println!(" Bytes per row: {}", image.bytes_per_row()); let data = image.data(); let expected_size = image.width() * image.height() * 4; println!(" Data length: {}", data.len()); println!(" Expected (w*h*4): {}", expected_size); // Check if there's padding in rows let bytes_per_row = image.bytes_per_row(); let width = image.width(); let expected_bytes_per_row = width * 4; println!("\nRow alignment:"); println!(" Actual bytes per row: {}", bytes_per_row); println!(" Expected (width * 4): {}", expected_bytes_per_row); println!( " Padding per row: {}", bytes_per_row - expected_bytes_per_row ); // Sample some pixels from different locations println!("\nFirst 3 pixels (raw bytes):"); for i in 0..3 { let offset = i * 4; println!( " Pixel {}: [{:3}, {:3}, {:3}, {:3}]", i, data[offset], data[offset + 1], data[offset + 2], data[offset + 3] ); } // Check a pixel from the middle let mid_row = image.height() / 2; let mid_col = image.width() / 2; let mid_offset = (mid_row * bytes_per_row + mid_col * 4) as usize; println!("\nMiddle pixel (row {}, col {}):", mid_row, mid_col); println!(" Offset: {}", mid_offset); if mid_offset + 3 < data.len() as usize { println!( " Bytes: [{:3}, {:3}, {:3}, {:3}]", data[mid_offset], data[mid_offset + 1], data[mid_offset + 2], data[mid_offset + 3] ); } }