linux - 屏幕截图命令行工具的最快图像捕获

标签 linux performance imagemagick screenshot x11

我正在尝试找到最快的方法在 GNU/linux 中获取全屏连续屏幕截图而无需任何人为干预。 到目前为止我得到:

$ time for i in {1..10}; do import -window root test-$i.png; done
real    0m9.742s
user    0m11.324s
sys     0m0.584s

$ time for i in {1..10}; do scrot test-$i.png; done
real    0m1.686s
user    0m1.528s
sys     0m0.060s

但是,我想要比 scrot 更快的东西。系统时间是在一台体面的(硬件方面)台式 PC(运行 Ubuntu Linux)中获取的。有趣的是,它托管了一个返回的 kvm 机器 (CrunchBang Linux):

$ time for i in {1..10}; do import -window root test-$i.png; done
real    0m7.591s
user    0m6.096s
sys     0m0.196s

$ time for i in {1..10}; do scrot test-$i.png; done
real    0m2.921s
user    0m2.440s
sys     0m0.120s

因此,ImageMagick 更快,但 scrot 更慢!?!硬盘 I/O 似乎不会影响速度,因为我得到的时间几乎相同。

对于显着(或不太显着)提高速度,您有什么建议?

谢谢!

最佳答案

您的体验时间可能会受到将屏幕图像转码为友好的 PNG 或 JPEG 格式的影响。只需使用 X 的 xwd(X 转储显示实用程序),从字面上看,将屏幕从 RAM 转储到磁盘。仅当您准备好查看/处理原始 XWD 文件时才将它们转换为另一种格式。

# Capture
time for i in {1..10}; do xwd -root -silent -out test-$i.xwd; done

# When ready to view
 mogrify -format PNG -path ./pngs test-*.xwd

您甚至可以通过仅转储特定窗口来加速 xwd 进程;其中,可以预先计算。

关于linux - 屏幕截图命令行工具的最快图像捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024423/

相关文章:

java - 这是一个意外错误。请提交包含 idea.log 文件的错误

c++ - 英特尔编译器生成的代码比 MSVC 慢 68%(提供了完整示例)

ios - 是否有可能从 iOS 上的 CIFilter 获得(接近)实时性能?

imagemagick 中的图像圈裁剪

.net - Magick .NET MagickDelegateErrorException 尝试读取上传的 .eps 文件时发生

ruby - 将 ImageMagick 命令移植到 RMagick

linux - cPanel 中的 Cron Jobs - 每天早上 9 点运行一次

linux - Ubuntu 20.04 上的 PhpStorm 后退导航中断

Linux 使用交换而不是 RAM 进行大图像处理

linux - 如何在不丢失标题的情况下查看特定进程的顶级命令?