如何拍摄网站的全屏截图

时间:2009-09-28 18:27:54

标签: java php screenshot

我需要通过URL获取网站的全屏镜头,是否有针对该服务或服务的PHP程序,如果没有,是否有用于此目的的Java程序?

8 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

您需要有一个特殊版本的浏览器,以便在处理PHP或Java之后“呈现”页面

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

有些服务可以为你做截屏。

http://www.browsercam.com

http://webthumb.bluga.net/home

仅举几例。

答案 2 :(得分:2)

Litmus是这类事物的绝佳在线资源;您可以提交一个URL,并在最新的浏览器上获取整页截图。如果您获得付费订阅或在周末使用它,您将可以访问所有22个浏览器而不是最近的浏览器。我一直都在使用这个网站,我认为这是惊人的。

BrowserShots也很棒,它支持更多的浏览器,但根据我的经验,它也会慢得多。如果您需要来测试Litmus没有的浏览器,那么使用它会很好。

答案 3 :(得分:2)

对我来说最好的解决方案: 使用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不会以这种方式工作,因为它无头。

很容易!!

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我发现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

答案 7 :(得分:0)

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

  • PhantomJS - >使用'Webkit'布局引擎(Safari / Chromium)
  • TrifleJS - >使用“Trident”布局引擎(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