以编程方式在Ruby中使用ScreenShot of Desktop?

时间:2009-11-14 08:43:19

标签: ruby webkit desktop screen-capture

我问过这个关于taking a picture of a webpage programmatically的问题,我已下载并webkit2png正在工作(拍摄HTML网页,如博客等等)。太酷了,谢谢你告诉我了!​​

现在我想开始做更多事情,比如能够在加载Flash网站和桌面后拍照。

是否可以使用webkit2png拍摄Flash网站(考虑到您可能需要等待几秒才能加载)?

但主要问题是,我如何以编程方式拍摄桌面照片?这将使我能够更好地控制正在发生的事情。

3 个答案:

答案 0 :(得分:3)

您可以使用xwd(1)截取根窗口的屏幕截图:

xwd -display :0 -root|xwdtopnm |pnmtopng > $1

答案 1 :(得分:2)

这是一个很棒的问题!

几年前,我必须从事类似的项目。我发现了一个名为watir的库,可以用来控制Ruby的系统浏览器。 在我检查的时候,它在Linux环境中并不真正可靠,但是现在它看起来非常可靠。

以下是几个链接:

我从来没有尝试过这个解决方案,所以如果你决定和Watir一起去,可以在这里写一个反馈,我真的很高兴。所有示例都以Windows服务器为目标,我没有找到使用Linux + Firefox环境的有效教程。

答案 2 :(得分:1)

您可以像这样使用Watir WebDriver

$ irb
irb(main):001:0> require 'watir-webdriver'
=> true
irb(main):002:0> browser = Watir::Browser.new
=> #<Watir::Browser:0x136da92fad77d562 url="about:blank" title="">
irb(main):003:0> browser.goto 'http://stackoverflow.com/questions/1733715/programmatically-take-screenshot-of-desktop-in-ruby'
=> "http://stackoverflow.com/questions/1733715/programmatically-take-screenshot-of-desktop-in-ruby"
irb(main):004:0> browser.screenshot.save 'screenshot.png'
=> #<File:screenshot.png (closed)>
irb(main):005:0>

这似乎做得很好!我在Mac上对此进行了测试,但如果它在Linux上也不能正常工作,我会感到惊讶。