首先,我不确定,如果有可能用php捕获浏览器窗口屏幕,那么 怎么做?
如果可能,最好只捕获网站内容,不包括菜单栏,工具栏,状态栏等浏览器部分。
由于
答案 0 :(得分:10)
有imagegrabscreen()
和imagegrabwindow()
,它允许您以编程方式从通过COM在同一台计算机上运行的浏览器创建屏幕截图(仅限Win)。有关如何省略浏览器的镶边,请参阅手册中的注释。启用DCOM后,这也适用于已设置为允许通过DCOM访问的远程Windows机器。
在那些说PHP不了解浏览器的旁注中,我建议在PHP手册中查看get_browser()
。它并不多,但嘿,这不是什么。
答案 1 :(得分:7)
这绝对可以完成,它只需要比PHP更多的东西来实现它。我有一个用PHP编写的应用程序,它以一定的时间间隔拍摄网站的快照。这是一个有点棘手的事情,但这是我在Linux机器上采取的步骤:
#!/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
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转换为其他内容)。