如何使用Rails 3.1获取网站的屏幕截图? - 不使用服务

时间:2011-11-21 21:03:15

标签: ruby-on-rails ruby-on-rails-3.1 screenshot webpage-screenshot

我发现几乎每个答案都使用了一些现有的服务。 有没有办法以编程方式使用Rails 3.1?这对PHP来说很容易(PHP中有预构建的库可以做到这一点)。

给定URL,我想要做的是:

  1. 截取网站的屏幕截图

  2. 裁剪它(仅左上角最多100x100像素

  3. PS。这是我的环境:Rails 3.1 ,Ruby 1.9.2

    注意:解决方案可能还需要遵循网址上的任何重定向。

    更新

4 个答案:

答案 0 :(得分:8)

这项任务有一个Rails gem。

 gem install selenium-webdriver

简单用例:

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

答案 1 :(得分:4)

这可能会有所帮助:https://github.com/csquared/IMGKit

答案 2 :(得分:2)

简单,但仅限Mac ,解决方案似乎是http://www.paulhammond.org/webkit2png/

只需chmod -x该脚本并用作python webkit2png http://www.google.com/并创建3个文件:

  1. 完整截图
  2. 网站最重要部分的缩略图
  3. 完整屏幕截图的缩略图

答案 3 :(得分:1)

您可以使用wkhtmltoimage加载网页并将其保存为图像,然后使用imagemagick(或其中一个红宝石包装器)来裁剪它。

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

虽然OSX没有预先构建的wkhtmltoimage二进制文件,所以也许您可能想要使用wkhtmltopdf,然后使用imagemagick转换为图像。

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