网站截图
2022-08-30 05:54:35
有没有办法在PHP中截取网站的屏幕截图,然后将其保存到文件中?
最后编辑:7年后,我仍然得到这个答案的赞成票,但我想这个现在更准确了。
当然可以,但您需要使用某些内容来呈现页面。如果你真的只想使用php,我建议你使用HTMLTOPS,它呈现页面并将其输出到ps文件(ghostscript)中,然后,将其转换为.jpg,.png.pdf。对于复杂的页面,速度可能会慢一些(并且不支持所有的CSS)。
否则,您可以使用wkhtmltopdf以pdf,jpg,其他任何形式输出html页面。接受CSS2.0,使用webkit(safari的包装器)来呈现页面。所以应该没问题。您还必须将其安装在服务器上。
更新现在,借助新的HTML5和JS功能,还可以使用JavaScript将页面呈现为画布对象。这里有一个很好的库可以做到这一点:Html2Canvas,这是同一作者的实现,以获得像G +这样的反馈。将 dom 渲染到画布中后,可以通过 ajax 发送到服务器并将其另存为 jpg。
编辑:您可以使用图像魔术工具将pdf转换为png。我的wkhtmltopdf版本不支持图像。例如.convert html.pdf -append html.png
编辑:这个小的shell脚本给出了一个简单/但工作的示例,在linux上使用php5-cli和上面提到的工具。
编辑:我现在注意到wkhtmltopdf团队正在研究另一个项目:wkhtmltoimage,直接给你jpg
从 PHP 5.2.2 开始,可以只用 PHP 捕获网站!
图像抓取屏幕 — 捕获整个屏幕
<?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系统上可用!