【发布时间】:2010-12-29 11:35:15
【问题描述】:
首先,我不确定,如果可以用 php 捕获浏览器窗口屏幕,那么 怎么办?
如果可能,最好只捕获网站内容,不包括菜单栏、工具栏、状态栏等浏览器部分。
谢谢
【问题讨论】:
-
我专门研究 php,但你分享了一些很酷的东西,谢谢 :)
标签: php browser screenshot
首先,我不确定,如果可以用 php 捕获浏览器窗口屏幕,那么 怎么办?
如果可能,最好只捕获网站内容,不包括菜单栏、工具栏、状态栏等浏览器部分。
谢谢
【问题讨论】:
标签: php browser screenshot
PHP 对浏览器一无所知。事实上,通常PHP在浏览器接收到数据之前就已经运行完毕。
如果可能的话,它必须是一个客户端系统,例如 Javascript。这可以遍历 DOM,从而捕获浏览器认为它正在显示的模型;但我不记得看到任何工具来捕获实际图形。 无论如何,尚不清楚您可以用这些信息做什么。浏览器不允许 Javascript 访问本地文件。我想您原则上可以通过 Ajax 调用将其发送回服务器。
【讨论】:
有imagegrabscreen() 和imagegrabwindow(),它们允许您通过COM 以编程方式从在同一台机器上运行的浏览器创建屏幕截图(但仅限Win)。有关如何省略浏览器的 chrome,请参阅手册中的 cmets。启用DCOM 后,这也适用于已设置为允许通过 DCOM 访问的远程 Windows 机器。
对于那些说 PHP 不了解浏览器的人的旁注,我建议查看 PHP 手册中的 get_browser()。不算多,不过也不算什么。
【讨论】:
从根本上不受互联网架构的支持,这是有充分理由的。您连接到的服务器不应该有任何关于您的信息,而不是处理和响应您的请求所需的信息。服务器肯定不能捕获有关您在屏幕上查看的内容的信息。
也就是说,您可能可以安装一些涉及客户端技术的东西,例如 ActiveX、Flash 或 Java,它们会捕获屏幕,然后在 AJAX 请求中将其发送回服务器,但您可能不应该这样做。我无法想象你会对这样的东西有什么样的用途,除了调试布局问题。
【讨论】:
您不能从 PHP(服务器端)执行此操作。
但是您可以使用众多 HTML 到 PDF 转换器中的一种来捕获图像(并且有很多工具可以将 PDF 转换为其他内容)。
【讨论】:
这完全可以做到,只需要比 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);
对我来说最棘手的部分是在屏幕截图发生时让浏览器全屏显示。因为不能直接访问浏览器,所以必须通过火狐的配置文件来配置一切,这可能需要一些时间才能弄清楚。
帮助您入门的有用链接:
http://semicomplete.com/blog/geekery/xvfb-firefox.html http://www.webmasterworld.com/forum21/9182.htm
【讨论】: