Rubyのデスクトップのスクリーンショットをプログラム的に撮影しますか?
-
20-09-2019 - |
質問
私はこの質問をしました プログラムでウェブページの写真を撮る, 、そして私はダウンロードして手に入れました webkit2png 作業(ブログなどのHTMLページの写真を撮る)。とてもかっこいい、それを見せてくれてありがとう!
今度は、Flash Webサイトがロードされた後、デスクトップの写真を撮ることができるように、さらにやり始めたいと思います。
WebKit2pngを使用してFlash Webサイトの写真を撮ることは可能ですか(ロードするには数秒待たなければならないかもしれないと考えてください)。
しかし、主な問題は、デスクトップの写真をプログラム的に撮影するにはどうすればよいですか?それにより、何が起こっているのかをより多くの制御できるようになります。
解決
これは素晴らしい質問です!
数年前、私は同様のプロジェクトに取り組む必要があります。呼ばれるライブラリを見つけました ワティール, 、Rubyのシステムブラウザを制御するために使用できます。私がチェックしたとき、それはLinux環境では本当に信頼できませんでしたが、今はかなり堅実なようです。
ここにいくつかのリンクがあります:
- http://90kts.com/blog/2008/capturing-screenshots-in-watir/
- http://www.marekj.com/wp/2008/04/desktop-screenshots-with-watir-win32screenshot-and-rmagick/
- http://clearspace.openqa.org/thread/13949
- http://wiki.openqa.org/display/wtr/faq#faq-howdoitakescreenshotsandappendtoawordfile%3f
私はこの解決策を試したことがないので、ワタルと一緒に行くことにした場合、ここにフィードバックを書くことができれば本当に幸せです。すべての例はWindowsサーバーをターゲットにしていますが、Linux + Firefox環境を使用した有効なチュートリアルは見つかりませんでした。
他のヒント
使用できます XWD(1) ルートウィンドウのスクリーンショットを撮るには:
xwd -display :0 -root|xwdtopnm |pnmtopng > $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でもうまく機能しない場合は驚くでしょう。