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

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

在给定URL的情况下,我要做的是:

  1. 截取该网站的截图

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

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

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

更新:

  • 我见过https://github.com/topfunky/osxscreenshot问题是它需要旧版本的Ruby(1.8.x)并且只能在我的开发Mac机器上运行。

  • 我已经看到了Wordpress的漏洞(他们有一项服务,没有任何速率限制,有人可能会滥用)。 我不想为了我的利益滥用他们的资源… http://s.wordpress.com/mshots/v1/http%3A%2F%2Fstackoverflow.com%2F?w=500

  • 使用http://rmagick.rubyforge.org/或https://github.com/thoughtbot/paperclip轻松完成裁剪

这项任务有一个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 

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

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

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

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

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

 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