使用快速命令行工具截图

时间:2014-04-11 23:58:44

标签: linux performance imagemagick screenshot

我正在尝试找到最快的方式在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

然而,我想要比秘密更快的东西。系统时间采用了体面的(硬件方式)台式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似乎不会影响速度,因为我得到几乎相同的时间。

你有什么建议(或不太显着)提高速度?

谢谢!

2 个答案:

答案 0 :(得分:2)

您的体验可能会受到将屏幕图像转码为友好的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进程;哪个,可以事先计算。

答案 1 :(得分:0)

就我而言,我发现使用jpeg压缩的scrot最快:

time scrot test.jpg 
scrot test.jpg  0.05s user 0.01s system 72% cpu 0.084 total
time xwd -root -silent -out test.xwd
xwd -root -silent -out test.xwd  0.18s user 0.05s system 88% cpu 0.252 total