2009-11-14 7 views
7

Ich habe diese Frage über taking a picture of a webpage programmatically gestellt, und ich habe heruntergeladen und habe webkit2png funktioniert (Aufnahme von HTML-Seiten wie Blogs und whatnot). So cool, danke, dass du mir das gezeigt hast!Programmatisch ScreenShot des Desktops in Ruby nehmen?

Jetzt möchte ich beginnen, mehr zu tun, wie in der Lage, Bilder von Flash-Websites zu machen, nachdem sie geladen haben, und von meinem Desktop.

Ist es möglich, mit webkit2png Bilder von Flash-Websites zu machen (in Anbetracht der Tatsache, dass Sie möglicherweise einige Sekunden warten müssen, bis die Datei geladen ist)?

Aber die Hauptfrage ist, wie programmiere ich programmatisch Bilder des Desktops? Das würde mir erlauben, viel mehr Kontrolle darüber zu haben, was vor sich geht.

Antwort

2

Dies ist eine wunderbare Frage!

Vor ein paar Jahren muss ich an einem ähnlichen Projekt arbeiten. Ich habe eine Bibliothek namens watir gefunden, mit der Sie Systembrowser von Ruby aus steuern können. Zu der Zeit, die ich überprüft habe, war es in einer Linux-Umgebung nicht wirklich zuverlässig, aber im Moment scheint es ziemlich solide zu sein.

Hier ein paar Links:

Ich habe diese Lösung nie versucht, so würde ich, wenn Sie wirklich glücklich sein kann Schreiben Sie hier ein Feedback, wenn Sie sich für Watir entscheiden. Alle Beispiele zielen auf einen Windows-Server. Ich habe kein gültiges Tutorial in einer Linux + Firefox-Umgebung gefunden.

3

können Sie xwd(1) verwenden, um einen Screenshot der Root-Fenster zu übernehmen:

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

Sie können Watir WebDriver wie folgt verwenden:

$ 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> 

, die den Job recht gut zu tun scheint! Ich habe das auf meinem Mac getestet, aber ich würde mich wundern, wenn es auch unter Linux nicht gut funktioniert.