2009-11-14 3 views
7

Я задал этот вопрос о taking a picture of a webpage programmatically, и я загрузил и получил webkit2png, работая (фотографируя страницы HTML, такие как блоги и многое другое). Так здорово, спасибо, что показал мне это!Программно взять ScreenShot рабочего стола в Ruby?

Теперь я хотел бы начать делать больше, например, иметь возможность фотографировать веб-сайты Flash после их загрузки и моего рабочего стола.

Можно ли фотографировать Flash-сайты с webkit2png (учитывая, что вам, возможно, придется подождать несколько секунд для его загрузки)?

Но главный вопрос: как программно сфотографировать рабочий стол? Это позволило бы мне гораздо больше контролировать, что происходит.

ответ

2

Это удивительный вопрос!

Пару лет назад я должен работать над подобным проектом. Я нашел библиотеку под названием watir, которую вы можете использовать для управления системными браузерами из Ruby. В то время, когда я проверял, он не был действительно надежным в среде Linux, но сейчас он выглядит довольно солидно.

Вот несколько ссылок:

Я никогда не пробовал это решение, так что я был бы очень рад, если вы можете напишите здесь отзыв, если вы решите пойти с Ватиром. Все примеры нацелены на сервер Windows, я не нашел правильного учебника с использованием среды Linux + Firefox.

3

Вы можете использовать xwd(1), чтобы сделать снимок корневого окна:

xwd -display :0 -root|xwdtopnm |pnmtopng > $1 
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.

Смежные вопросы