Программно взять ScreenShot of Desktop в Ruby? - PullRequest
7 голосов
/ 14 ноября 2009

Я задал этот вопрос о программном фотографировании веб-страницы , и я скачал и получил webkit2png (создание фотографий HTML-страниц, таких как блоги и еще много чего). Так круто, спасибо, что показали мне это!

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

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

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

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

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

xwd -display :0 -root|xwdtopnm |pnmtopng > $1
2 голосов
/ 14 ноября 2009

Это потрясающий вопрос!

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

Вот пара ссылок:

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

1 голос
/ 19 июля 2013

Вы можете использовать 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 '/1139478/programmno-vzyat-screenshot-of-desktop-v-ruby'
=> "/1139478/programmno-vzyat-screenshot-of-desktop-v-ruby"
irb(main):004:0> browser.screenshot.save 'screenshot.png'
=> #<File:screenshot.png (closed)>
irb(main):005:0>

, который, кажется, делает работу довольно хорошо! Я проверил это на своем Mac, но я был бы удивлен, если бы это не работало и на Linux.

...