网站截图
有什么方法在PHP中截取网站截图,然后将其保存到文件中?
最后编辑 :7年后,我仍然得到upvote fot这个答案,但我想这一个现在更准确。
当然你可以,但你需要用某种东西来渲染页面。 如果你真的只想使用PHP,我建议你HTMLTOPS,将页面渲染并输出到ps文件(ghostscript),然后将它转换为.jpg,.png,.pdf ..可以慢一点复杂的页面(并且不支持所有的CSS)。
否则,您可以使用wkhtmltopdf以pdf,jpg,whaterver格式输出html页面。接受CSS2.0,使用webkit(safari的包装器)渲染页面。所以应该没问题。 您必须将其安装在您的服务器上,以及..
更新现在,使用新的HTML5和JS功能,也可以使用Javascript将页面渲染为画布对象。 这里有一个很好的库:Html2Canvas,这里是由同一作者实现的一个实现,以获得像G +一样的反馈。 一旦你将dom渲染到画布中,你就可以通过ajax发送到服务器并将它保存为jpg。
编辑 :您可以使用imagemagick工具将pdf转换为png。 我的wkhtmltopdf版本不支持图像。 例如convert html.pdf -append html.png
。
编辑 :这个小外壳脚本给出了一个简单的/但在Linux上使用php5-cli和上述工具的使用示例。
编辑 :我现在注意到,wkhtmltopdf团队正在开发另一个项目:wkhtmltoimage,它直接为您提供jpg
从PHP 5.2.2开始,有可能只用PHP捕获一个网站 !
imagegrabscreen - 捕捉整个屏幕
<?php
$img = imagegrabscreen();
imagepng($img, 'screenshot.png');
?>
imagegrabwindow - 使用窗口句柄(COM实例中的HWND属性) 抓取窗口或其客户区域
<?php
$Browser = new COM('InternetExplorer.Application');
$Browserhandle = $Browser->HWND;
$Browser->Visible = true;
$Browser->Fullscreen = true;
$Browser->Navigate('http://www.stackoverflow.com');
while($Browser->Busy){
com_message_pump(4000);
}
$img = imagegrabwindow($Browserhandle, 0);
$Browser->Quit();
imagepng($img, 'screenshot.png');
?>
编辑: 请注意,这些功能仅适用于Windows系统!
如果您不想使用任何第三方工具,我已经遇到了使用Google Page Insight API的简单解决方案。
只需要用params screenshot=true
来调用它就可以了。
https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=www.stackoverflow.com/&key={your_api_key}&screenshot=true
对于移动网站查看传递&strategy=mobile
参数,
https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=www.stackoverflow.com/&key={your_api_key}&screenshot=true&strategy=mobile
DEMO 。
链接地址: http://www.djcxy.com/p/68145.html上一篇: Website screenshots
下一篇: Fragments controlled by a ViewPager in a Fragment do not appear