PHP:如何使用php捕获浏览器窗口屏幕?

时间:2009-12-23 12:37:24

标签: php browser screenshot

首先,我不确定,如果有可能用php捕获浏览器窗口屏幕,那么 怎么做?

如果可能,最好只捕获网站内容,不包括菜单栏,工具栏,状态栏等浏览器部分。

由于

5 个答案:

答案 0 :(得分:10)

imagegrabscreen()imagegrabwindow(),它允许您以编程方式从通过COM在同一台计算机上运行的浏览器创建屏幕截图(仅限Win)。有关如何省略浏览器的镶边,请参阅手册中的注释。启用DCOM后,这也适用于已设置为允许通过DCOM访问的远程Windows机器。

在那些说PHP不了解浏览器的旁注中,我建议在PHP手册中查看get_browser()。它并不多,但嘿,这不是什么。

答案 1 :(得分:7)

这绝对可以完成,它只需要比PHP更多的东西来实现它。我有一个用PHP编写的应用程序,它以一定的时间间隔拍摄网站的快照。这是一个有点棘手的事情,但这是我在Linux机器上采取的步骤:

  • 安装Xvfb(或vnc-server)以模拟内存中的X Windows会话。在显示屏上启动Xvfb:1
  • 安装Firefox
  • 安装imagemagick
  • 创建一个bash脚本,在所需的URL上运行Firefox。我看起来像这样:

#!/bin/bash
DISPLAY=:1 firefox &
sleep 2s
DISPLAY=:1 firefox -kill-all &
sleep 1s
DISPLAY=:1 firefox -url $1 &
sleep 5s
DISPLAY=:1 import -window root /var/www/images/screenshots/$2.png
  • 从PHP执行脚本:

exec ('sh ../scripts/screencap.sh ' . $url . ' ' . $file_name);

对我来说最棘手的部分是在屏幕截图发生时让浏览器全屏显示。由于您无法直接访问浏览器,因此您必须通过Firefox的配置文件配置所有内容,这可能需要一些时间来确定。

有助于您入门的有用链接:

http://semicomplete.com/blog/geekery/xvfb-firefox.html http://www.webmasterworld.com/forum21/9182.htm

答案 2 :(得分:2)

PHP对浏览器一无所知。实际上,通常PHP在浏览器接收数据之前就已经完成了运行。

如果可能,它必须是客户端系统,如Javascript。这可以遍历DOM,因此捕获浏览器认为它正在显示的模型;但我不记得看到任何捕获实际图形的工具。 无论如何,目前尚不清楚您可以用这些信息做些什么。浏览器不允许Javascript访问本地文件。我想你原则上可以在Ajax调用中将它发送回服务器。

答案 3 :(得分:1)

从根本上不受互联网架构的支持,并且有充分的理由。您要连接的服务器不应该有任何关于您的信息,而不是处理和响应您的请求所需的信息。服务器只能获取有关您在屏幕上查看内容的信息。

也就是说,您可能需要处理涉及ActiveX或Flash或Java等客户端技术的内容,这些技术会捕获屏幕,然后在AJAX请求中将其发回服务器,但您可能不应该这样做。我无法想象你对这种事情有什么样的用处,除此之外可能还有调试布局问题。

答案 4 :(得分:0)

您不能从PHP(服务器端)执行此操作。

但你可以使用众多HTML到PDF转换器中的一个来捕获图像(并且有很多工具可以将PDF转换为其他内容)。