#截图 #x11 #显示 #xrandr #mit-shm

rxscreen

libx11的包装库,用于捕获屏幕截图并保存

7个版本

0.1.7 2024年2月18日
0.1.6 2023年2月13日
0.1.5 2022年11月16日
0.1.3 2021年3月4日

#223图像

Download history 23/week @ 2024-03-17 15/week @ 2024-03-24 22/week @ 2024-03-31 60/week @ 2024-04-07 76/week @ 2024-04-14 7/week @ 2024-04-21 1/week @ 2024-04-28 12/week @ 2024-05-19 24/week @ 2024-05-26 56/week @ 2024-06-02 30/week @ 2024-06-09 16/week @ 2024-06-16 16/week @ 2024-06-23 2/week @ 2024-06-30

每月73次下载

MIT 许可证

76KB
2K SLoC

rxscreen

libx11的一个简单包装库,用于截取屏幕截图。

依赖

  • libx11
  • libxext(带有shm特性)
  • libxrandr(带有xrandr特性)

特性

  • save(直接保存截图到文件)
  • MIT-SHM(使用MIT-SHM扩展快速截取屏幕截图,用于屏幕录制等)
  • Xrandr(使用Xrandr查询连接到X11服务器的显示器)
  • 鼠标(查询鼠标位置)

计划中的特性

  • 图形,允许创建自己的显示并在其上绘制。
  • 扩展Xrandr支持以更改显示配置

类似的项目


lib.rs:

rxscreen设计成一个简单、易于使用的库,围绕x11服务器及其扩展的各种功能。实现的功能

  • X11
  • Xrandr(通过xrandr特性)
  • MIT-SHM(通过shm特性)

示例

捕获整个X11显示的截图

if let Ok(display) = Display::new(":0.0") {
   let capture = display.capture()
                    .unwrap();
   // `capture` is now an `Image` containing Bgr8 data of the image.
   // You can now save it to a file, or do whatever you want with it.
}

捕获特定显示器的截图(需要“xrandr”特性)

#[cfg(feature = "xrandr")]
#[cfg(feature = "xrandr")]
if let Ok(display) = Display::new(":0.0") {
  if let Some(monitor) = display.monitors()
                             .iter()
                             .find(|monitor| monitor.primary()) {
      let capture = display.capture_area(
              (monitor.x as u32, monitor.y as u32),
              (monitor.width as u32, monitor.height as u32)
          ).unwrap();
      // `capture` is now an `Image` containing the screenshot of the primary monitor as Bgr8 data.
      // You can now save it to a file, or do whatever you want with it.
   }
}

依赖

~0–2.9MB
~12K SLoC