如何在unix(debian)上使用php创建inmemory屏幕捕获

如何在unix(debian)上使用php创建inmemory屏幕捕获,php,debian,screen-capture,Php,Debian,Screen Capture,以下代码仅在windows上可用 <?php ... $im = imagegrabwindow($handle); ... imagedestroy($im); ?> unix(debian)php环境下的解决方案是什么,在php cli程序中获取屏幕捕获?因此,听起来您想从Firefox:p捕获屏幕 对于无头服务器,请确保先安装了Xvfb,然后使用Xvfb:2-屏幕0 1024x768x24&启动它(当然,您可以根据需要更改显示:2和分辨率102

以下代码仅在windows上可用

<?php
  ...
  $im = imagegrabwindow($handle);
  ...      
  imagedestroy($im);
?>


unix(debian)php环境下的解决方案是什么,在php cli程序中获取屏幕捕获?

因此,听起来您想从Firefox:p捕获屏幕

对于无头服务器,请确保先安装了Xvfb,然后使用
Xvfb:2-屏幕0 1024x768x24&
启动它(当然,您可以根据需要更改显示:2和分辨率1024x768x24)

运行Firefox在该显示器上打开特定页面
display=:2 Firefox
。稍等Firefox打开页面,然后执行
sleep 10
或类似操作

然后从ImageMagick(当然必须安装)中加入一些“魔法”,将屏幕捕获到一个文件:
import-windowroot-display:2 example.png

现在你的处理乐趣开始了:p

下面是一个小的bash脚本,它将所有内容放在一起(Xvfb应该已经运行了,它才能工作):

从PHP调用它,并将屏幕截图的URL和文件名作为参数提供给它


顺便说一句,如果您的服务器有X,您可以跳过Xvfb部分,使用正在运行的X服务器显示器(很可能是:0)。

因此,听起来您想从Firefox:p捕获屏幕

对于无头服务器,请确保先安装了Xvfb,然后使用
Xvfb:2-屏幕0 1024x768x24&
启动它(当然,您可以根据需要更改显示:2和分辨率1024x768x24)

运行Firefox在该显示器上打开特定页面
display=:2 Firefox
。稍等Firefox打开页面,然后执行
sleep 10
或类似操作

然后从ImageMagick(当然必须安装)中加入一些“魔法”,将屏幕捕获到一个文件:
import-windowroot-display:2 example.png

现在你的处理乐趣开始了:p

下面是一个小的bash脚本,它将所有内容放在一起(Xvfb应该已经运行了,它才能工作):

从PHP调用它,并将屏幕截图的URL和文件名作为参数提供给它


顺便说一句,如果您的服务器有X,您可以跳过Xvfb部分,使用正在运行的X服务器显示器(很可能是:0)。

您能更详细地解释一下您想要实现的目标吗?因为cli php脚本不需要任何图形环境,所以“截屏”的概念对我来说有点奇怪。php cli程序应该识别一个目标窗口(使用xdotool搜索——名称为“Firefox”)并分析窗口内容。您能更详细地解释一下您试图实现的目标吗?因为cli php脚本不需要任何图形环境,所以“截屏”的概念对我来说有点奇怪。php cli程序应该识别目标窗口(使用xdotool搜索——名称为“Firefox”)并分析窗口内容。谢谢。这就是硬盘解决方案:)你知道内存实现吗?谢谢。这就是硬盘解决方案:)你知道内存实现吗?
#!/bin/bash
export DISPLAY=":2" /usr/bin/firefox "$1"&
/bin/sleep 10
/usr/bin/import -window root -display :2 "$2"
killall firefox-bin