服务器生成的网络屏幕截图?

时间:2020-03-06 14:34:48  来源:igfitidea点击:

我一直在玩的一个问题是一项服务,该服务需要我的服务器在给定的URL下生成网页的屏幕截图。问题是我不知道如何实现这一目标。我主要使用LAMP软件堆栈,因此考虑到给出的答案将是最有帮助的。同样,基本要求是:给定URL,服务器需要在该URL上生成呈现的网页的图像文件。提前致谢!

解决方案

实际上,我们实际上需要让服务器启动有问题的Web浏览器,并使用适当的库对应用程序进行截图。 Apache不会为我们呈现该页面,因此我们必须具有该软件。

是的,这就是需要的。我在asp.net中这样做,实际上我创建了一个WebBrowser对象,该对象可在.Net框架类库中使用以生成屏幕截图。

我们可能还想看看webkit,它以比其他渲染引擎更易于嵌入(由Adobe用于AIR,由Google用于Chrome,由Apple对于iPhone ...)而闻名。这可能需要花费更多的工作来进行设置,但比起启动网络浏览器并抓取屏幕快照的某些黑客要稳定得多。

如果服务器是Mac,那么我建议使用webkit2png,这是一个简短的python程序,它利用WebKit的Objective-C API呈现URL。我个人将它与WWW :: Mechanize结合使用,以遍历我的开发站点并制作每个页面的屏幕截图-可用于测试功能,显示客户端并保持屏幕截图最新。生成的屏幕截图非常完美,但对于较长的滚动页面而言有时非常高。

如果服务器安装了非裸机Linux发行版且安装了KDE,则可以尝试khtml2png。我自己没有尝试过,但是在webkit2png页面上看到了它。

我使用http://webthumb.bluga.net服务来生成缩略图。健壮,强大,易于使用且价格合理。我有一个使用此服务的高流量生产网站,并且效果很好。考虑到创建健壮的Web截图服务的困难,让其他人来完成这项工作真是太好了。

Java的非免费解决方案是WebRenderer。有趣的功能:渲染时它可以模拟Safari,IE或者Firefox浏览器。它们具有台式机版本和无头服务器版本。他们还提供了示例代码,显示了如何呈现网页的屏幕快照图像。

virtual framebuffer X server

我宁愿建议XVFB(虚拟帧缓冲X服务器)是拍摄无头服务器屏幕截图的最佳解决方案。虚拟帧缓冲区X服务器xvfb提供了一个X服务器,该服务器可以在没有显示硬件和物理输入设备的计算机上运行。
我正在服务器上使用它来测试URL并获取其屏幕截图。我们正在使用Ubuntu&XVFB + FIREFOX。一切正常。根据需要进行修改。查看这些文章。它可能对我们已用光。

http://www.semicomplete.com/blog/geekery/xvfb-firefox.html

http://linux.about.com/cs/linux101/g/xvfb.htm

http://www.xfree86.org/4.0.1/Xvfb.1.html