网站截图

14 浏览
0 Comments

网站截图

有没有办法在PHP中截取网站的屏幕截图,然后保存到文件中?

admin 更改状态以发布 2023年5月23日
0
0 Comments

自 PHP 5.2.2 起,仅使用 PHP 就可以截取网站了

imagegrabscreen — 截取整个屏幕


imagegrabwindow - 使用窗口句柄 (COM 实例中的 HWND 属性) 来截取窗口或其客户端区域

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 系统!

0
0 Comments

最近编辑: 7年过去了,我仍然收到这个答案的赞,但我想这个现在更准确。


当然可以,但你需要用某种方式渲染页面。
如果你真的只想使用PHP,我建议你使用HTMLTOPS,它将呈现页面并将其输出到ps文件(Ghostscript),然后将其转换为.jpg,.png,.pdf ......在处理复杂页面时速度可能有点慢(并且不支持所有CSS)。

否则,您可以使用wkhtmltopdf将HTML页面输出为pdf,jpg等......接受CSS2.0,使用webkit(Safari的包装器)呈现页面......一切都应该没问题。
您也必须在服务器上安装它。

更新:现在,使用新的HTML5和JS功能,也可以使用JavaScript将页面呈现为canvas对象。这里有一个很好的库: Html2Canvas,作者已经实现了一个反馈功能,类似于G+。一旦您将dom呈现到canvas中,就可以通过ajax将其发送到服务器并将其保存为jpg。

编辑: 您可以使用imagemagick工具将pdf转换为png。我的wkhtmltopdf版本不支持图像。例如,convert html.pdf -append html.png

编辑: 这个小的shell脚本在linux上使用php5-cli和上面提到的工具中提供了一个简单/但有效的使用示例。

编辑: 我现在注意到wkhtmltopdf团队正在开发另一个项目:wkhtmltoimage,该项目直接提供jpg。

0