How to take screenshot of a website with Rails 3.1? — without using a service

南楼画角 提交于 2019-12-02 17:18:57

There is a Rails gem for this task.

 gem install selenium-webdriver

Simple use case:

require 'selenium-webdriver'
 width = 1024
 height = 728
 driver = Selenium::WebDriver.for :firefox
 driver.navigate.to 'http://domain.com'
 driver.execute_script %Q{
   window.resizeTo(#{width}, #{height});
 }
 driver.save_screenshot('/tmp/screenshot.png')
 driver.quit

You could use wkhtmltoimage to load up the webpage and save it as an image, then imagemagick, (or one of the ruby wrappers for it) to crop it.

wkhtmltoimage www.google.com output.jpg
convert -crop 100x100+0+100 output.jpg cropped.jpg

There isn't a prebuilt wkhtmltoimage binary for OSX though, so perhaps you may want to use wkhtmltopdf instead and then imagemagick to convert to an image.

wkthmltopdf www.google.com output.pdf
convert -crop 100x100+0+100 output.pdf cropped.jpg

A simple, but Mac only, solution seems to be http://www.paulhammond.org/webkit2png/

Just chmod -x that script and use as python webkit2png http://www.google.com/ and it creates 3 files:

  1. Full screenshot
  2. Thumbnail of the top most portion of site
  3. Thumbnail of the full screenshot
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!