【发布时间】:2015-03-18 06:59:18
【问题描述】:
我需要通过 URL 获取网站的全屏截图,是否有任何 PHP 程序或服务,如果没有,是否有任何 Java 程序用于此目的?
【问题讨论】:
标签: java php screenshot
我需要通过 URL 获取网站的全屏截图,是否有任何 PHP 程序或服务,如果没有,是否有任何 Java 程序用于此目的?
【问题讨论】:
标签: java php screenshot
【讨论】:
您需要有一个特殊版本的浏览器来“渲染”页面它由 PHP 或 Java 处理。
在 ping 运行 Windows、OSX 或 Linux 窗口管理器的服务器后,您很可能需要设置一些自定义自动化脚本来访问 URL。
有一些服务可以为您截屏。
http://webthumb.bluga.net/home
仅举几例。
【讨论】:
对我来说最好的解决方案: 使用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 不会以这种方式工作,因为它是无头的。
太简单了!!
【讨论】:
Litmus 是此类事情的绝佳在线资源;您可以提交一个 URL 并让它在最新的浏览器上截取整页屏幕截图。如果您获得付费订阅或在周末使用它,您将可以在其所有 22 种浏览器上进行测试,而不仅仅是最新的。我一直在使用这个网站,我认为它非常棒。
BrowserShots 也很棒,它支持更多的浏览器,但根据我的经验,它也慢了很多。如果您需要测试一些 Litmus 不需要的浏览器,那么使用它是很好的选择。
【讨论】:
如果您有专用服务器,您也可以自己做。我们的想法是在全屏模式下启动 X 服务器和浏览器,拍摄照片并将其保存到图像文件中。
根据您的使用情况(偶尔或密集),您可以调整过程(即不每次都杀死 X 等...)以使其更快。
【讨论】:
从问题中不清楚您是希望以编程方式还是手动执行此操作。如果手动:有一个很棒的 Firefox 插件 Abduction! 可以将页面呈现为图像。否则,凯恩的答案几乎涵盖了它。
【讨论】:
我发现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
【讨论】:
试试headless browser。这些中的任何一个都应该这样做:
您可以使用以下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。
【讨论】: