【问题标题】:Server Generated web screenshots?服务器生成的网页截图?
【发布时间】:2008-09-23 04:22:50
【问题描述】:

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

【问题讨论】:

  • 别担心外伤小马,我的网络服务与您尝试阅读文章时悬停在链接上的弹出图像无关:)

标签: web-services


【解决方案1】:

您可能还想看看webkit,它以比其他渲染引擎更容易嵌入而闻名(Adobe 用于 AIR,Google 用于 Chrome,Apple 用于 iPhone...)。这可能需要更多的工作来设置,但它会比一些启动网络浏览器并截取屏幕截图的黑客更稳定。

【讨论】:

  • 现在可以使用 PhantomJS,一个无头 WebKit。
  • @jholster 感谢您的评论! PhantomJS 看起来和我要找的完全一样!
【解决方案2】:

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

如果您的服务器有一个安装了 KDE 的非准系统 Linux 发行版,那么您可以试试khtml2png。我自己没有尝试过,但在 webkit2png 页面上看到了它。

【讨论】:

  • 不知何故,我认为那里没有那么多 Mac 服务器,但 khtml2png 看起来也不错(如果不是那么精致)
【解决方案3】:

PhantomJS 是一个基于 WebKit 的无头(命令行)浏览器,可以方便地通过scripted 保存网页截图。

【讨论】:

    【解决方案4】:

    您实际上需要让服务器启动有问题的 Web 浏览器,并使用适当的库截取应用程序的屏幕截图。 Apache 不会为您呈现页面,因此您必须拥有能够呈现该页面的软件。

    【讨论】:

    • 正确。我的一些想法是自动从桌面环境中收集屏幕截图,或者以某种方式使用 gecko 引擎构建页面的渲染版本,我可以从中构建图像。嗯……
    【解决方案5】:

    是的,这正是我们所需要的。我在 asp.net 中执行此操作,实际上我创建了一个 WebBrowser 对象,该对象可在 .Net 框架类库中生成屏幕截图。

    【讨论】:

      【解决方案6】:

      我使用http://webthumb.bluga.net 服务生成缩略图。强大、强大、易于使用且价格非常合理。我有一个使用此服务的高流量制作网站,它运行良好。鉴于创建强大的 Web 屏幕截图服务的难度,让其他人来完成这项艰巨的工作真是太好了。

      【讨论】:

      • 但它不会捕获整个网站,它只是对其进行缩略图。
      【解决方案7】:

      Java 的非免费解决方案是WebRenderer。有趣的功能:它可以在渲染时模拟 Safari、IE 或 Firefox 浏览器。他们有桌面版本和无头服务器版本。他们还有示例代码显示如何呈现网页的屏幕截图。

      【讨论】:

        【解决方案8】:

        虚拟帧缓冲 X 服务器

        我宁愿推荐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

        【讨论】:

          猜你喜欢
          • 2010-10-17
          • 2013-05-02
          • 2011-04-14
          • 1970-01-01
          • 1970-01-01
          • 2020-10-31
          • 1970-01-01
          • 1970-01-01
          • 2015-06-10
          相关资源
          最近更新 更多