【问题标题】:How can I take fullscreen screenshot of website [closed]如何获取网站的全屏截图[关闭]
【发布时间】:2015-03-18 06:59:18
【问题描述】:

我需要通过 URL 获取网站的全屏截图,是否有任何 PHP 程序或服务,如果没有,是否有任何 Java 程序用于此目的?

【问题讨论】:

    标签: java php screenshot


    【解决方案1】:

    【讨论】:

    • 哇,#2 太棒了!将来必须记住这一点。
    【解决方案2】:

    您需要有一个特殊版本的浏览器来“渲染”页面它由 PHP 或 Java 处理。

    在 ping 运行 Windows、OSX 或 Linux 窗口管理器的服务器后,您很可能需要设置一些自定义自动化脚本来访问 URL。

    有一些服务可以为您截屏。

    http://www.browsercam.com

    http://webthumb.bluga.net/home

    仅举几例。

    【讨论】:

      【解决方案3】:

      对我来说最好的解决方案: 使用selenium webdriver 并且截图可以像this一样简单:

      import java.io.File;
      import java.net.URL;
      
      import org.openqa.selenium.OutputType;
      import org.openqa.selenium.TakesScreenshot;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.remote.Augmenter;
      import org.openqa.selenium.remote.DesiredCapabilities;
      import org.openqa.selenium.remote.RemoteWebDriver;
      
      public class Testing {
      
          public void myTest() throws Exception {
              WebDriver driver = new RemoteWebDriver(
                                      new URL("http://localhost:4444/wd/hub"), 
                                      DesiredCapabilities.firefox());
      
              driver.get("http://www.google.com");
      
              // RemoteWebDriver does not implement the TakesScreenshot class
              // if the driver does have the Capabilities to take a screenshot
              // then Augmenter will add the TakesScreenshot methods to the instance
              WebDriver augmentedDriver = new Augmenter().augment(driver);
              File screenshot = ((TakesScreenshot)augmentedDriver).
                                  getScreenshotAs(OutputType.FILE);
          }
      }
      

      别忘了使用 FireFoxDriver。 HtmlUnitDriver 不会以这种方式工作,因为它是无头的。

      太简单了!!

      【讨论】:

      • 但是您需要运行 Selenium 服务器并安装 firefox 浏览器才能正常工作?
      • @newbie 需要安装 Firefox 浏览器。但不需要运行 Selenium 服务器。您只需要将所需的库导入您的 java 项目。
      【解决方案4】:

      Litmus 是此类事情的绝佳在线资源;您可以提交一个 URL 并让它在最新的浏览器上截取整页屏幕截图。如果您获得付费订阅或在周末使用它,您将可以在其所有 22 种浏览器上进行测试,而不仅仅是最新的。我一直在使用这个网站,我认为它非常棒。

      BrowserShots 也很棒,它支持更多的浏览器,但根据我的经验,它也慢了很多。如果您需要测试一些 Litmus 不需要的浏览器,那么使用它是很好的选择。

      【讨论】:

      • 我并不是说我需要在不同的浏览器上测试网页,而是我需要从给定的 url 中快速获取屏幕截图。是否有任何开源/免费应用程序,它真的不必是 php 或 java,只要免费软件可以工作......
      • 我想我不明白其中的区别。你仍然可以使用 Litmus 或 Browsershots 来做同样的事情,只需为一个浏览器运行测试。
      【解决方案5】:

      如果您有专用服务器,您也可以自己做。我们的想法是在全屏模式下启动 X 服务器和浏览器,拍摄照片并将其保存到图像文件中。

      根据您的使用情况(偶尔或密集),您可以调整过程(即不每次都杀死 X 等...)以使其更快。

      【讨论】:

        【解决方案6】:

        从问题中不清楚您是希望以编程方式还是手动执行此操作。如果手动:有一个很棒的 Firefox 插件 Abduction! 可以将页面呈现为图像。否则,凯恩的答案几乎涵盖了它。

        【讨论】:

          【解决方案7】:

          我发现CutyCapt 是最简单的截屏解决方案,它适用于 Windows 和 Linux。

          在 Windows 中安装:

          只需下载文件并执行。

          在 debian 中安装:

          apt-get install cutycapt xvfb
          

          并运行:

          xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/cutycapt --url=http://www.google.com --out=/home/screenshots/screenshot_name.png
          

          【讨论】:

            【解决方案8】:

            试试headless browser。这些中的任何一个都应该这样做:

            • PhantomJS -> 使用“Webkit”布局引擎(Safari/Chromium)
            • TrifleJS -> 使用“三叉戟”布局引擎(Internet Explorer)
            • SlimerJS -> 使用 'Gecko' 布局引擎 (Firefox)

            您可以使用以下javascript代码截取屏幕截图(保存到文件renderpage.js):

            var page = require('webpage').create();
            page.open('http://en.wikipedia.org', function() {
                page.render('wikipedia.png');
            });
            

            然后通过命令行执行:

            > phantomjs.exe renderpage.js
            

            这将使用您的屏幕截图创建一个文件wikipedia.png

            【讨论】:

              猜你喜欢
              • 2015-06-14
              • 1970-01-01
              • 1970-01-01
              • 2010-11-14
              • 2016-11-13
              • 2013-01-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多