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