我正在尝试使用imagegrabscreen捕获本地网页,但我只获得了黑色屏幕截图。我在SO和其他网站上尝试了几乎所有问题的解决方案,没有任何效果。
我正在使用并完成以下操作:
<?php
$im = imagegrabscreen();
imagepng($im, "myscreenshot.png");
imagedestroy($im);
?>
我得到的只是一张1024x768 png的黑色图片。
答案 0 :(得分:2)
你可以做到。我这样做了我没有使用WAMP。我把一切都分开了。我有所有PHP,MySQL和Apache设置。
以下是步骤。
停止Apache服务器服务。你可以通过调用
来做到这一点NET STOP Apache2.2
或者您可以打开services.msc
然后停止它。
将Apache2.2
文件夹复制出C:\
。 将其置于您拥有完全访问权限的位置。像Documents
或其他驱动器。我把它放在K:
中。确保您拥有完全访问权限,
Full control
文件夹的安全标签上标有Apache2.2
个标记。 httpd.conf
将包含许多硬编码路径。像C:\apache software foundation\apache2.2
一样。只需用新路径替换它们即可。就我而言,它是K:\Apache2.2
。此时应停止Apache服务器服务。所以80端口不会被阻止。您将在您自己的区域(目录)中拥有您自己的 Apache。
打开控制台窗口,使用htdocs
cd
文件夹所在的Apache主页以及其他一些文件夹
bin\httpd.exe
。这意味着您正在运行Apache。 您拥有对桌面的完全访问权限。 你可以做任何事情,httpd.exe
打开您的网页。使用以下代码。
<?php
header("Content-type: image/png");
$im = imagegrabscreen();
imagepng($im);
imagedestroy($im);
exit(0);
?>
您会看到图片。
答案 1 :(得分:1)
这是来自php.net手册页上对imagegrabscreen()的评论;尝试一下,看看它是否解决了问题,听起来就像你遇到的那样:
为此,您的Apache服务必须设置为“允许服务与桌面交互”,否则您将获得一个空白图像。
实际进行更改:
services.msc
。Allow this service to interact with the desktop
。答案 2 :(得分:0)
如果您在使用imagegrabscreen()时遇到问题,可能需要尝试使用Windows命令行工具捕获boxcutter之类的屏幕。然后使用PHP exec()函数来调用它。例如:
<?php
$exec = exec('boxcutter -f image.png'); // -f is full screen option