用imagegrabscreen和Wamp捕获图像

我正在尝试使用imagegrabscreen捕获本地网页,但我只能看到黑色的截图。 我尝试了几乎所有关于SO和其他站点的问题的解决scheme,而且没有任何工作。

我正在使用并完成以下操作:

  • Windows 7 64位
  • Wamp 2.2a 64bit
  • PHP 5.3.8
  • gd2(版本:“捆绑2.0.34兼容”)已安装并启用。
  • 允许apache服务与桌面交互。
  • 我没有第二显示器或任何东西。
<?php $im = imagegrabscreen(); imagepng($im, "myscreenshot.png"); imagedestroy($im); ?> 

而我得到的是一个黑色的图像1024×768 PNG。

你能行的。 我做到了 我没有使用WAMP。 我用一切分开。 我有所有的PHP,MySQL和Apache的设置。

这是步骤。

  1. 停止Apache服务器服务 。 你可以通过调用来做到这一点

     NET STOP Apache2.2 

    或者你可以打开services.msc然后停止它。

  2. C:\复制Apache2.2文件夹。 把它放在你有完全访问权限的地方 。 像Documents或其他驱动器。 我把它放在K: . 为了确保您有完整的访问权限,

    1. 递归获取Apache目录的所有权。
    2. 确保您已在Apache2.2文件夹的安全选项卡上标记为Full control
    3. 这个新的Apache的配置文件httpd.conf将包含很多硬编码路径。 像C:\apache software foundation\apache2.2 。 只要用新的路径取代那些。 在我的情况下是K:\Apache2.2
  3. 此时你的Apache服务器服务应该停止。 所以80端口不会被阻塞。 你将在自己的领域(目录)拥有自己的 Apache。

  4. 打开一个控制台窗口,并转到您的Apache家,其中htdocs文件夹与其他一些文件夹一起使用cd

  5. 运行bin\httpd.exe 。 这意味着正在运行Apache。 可以完全访问您的桌面。 可以做任何事情, httpd.exe
  6. 打开你的网页。 用下面的代码。

     <?php header("Content-type: image/png"); $im = imagegrabscreen(); imagepng($im); imagedestroy($im); exit(0); ?> 
  7. 你会看到图像。

这是从php.net手册页imagegrabscreen()的评论; 尝试一下,看看它是否解决了这个问题,这听起来像是你遇到的:

为此,您的Apache服务必须设置为“允许服务与桌面交互”,否则您只会获得空白图像。

要实际做出改变:

  • 以Admin身份运行命令services.msc
  • 在列表中找到Apache服务,右键单击并选择属性
  • 单击登录选项卡
  • 如果服务尚未更改,请使用本地系统帐户
  • 选中Allow this service to interact with the desktop的框。
  • 重新启动Apache服务。

如果您在使用imagegrabscreen()时遇到问题,您可能需要尝试使用Windows命令行工具来捕获像boxcutter这样的屏幕。 然后使用PHP的exec()函数来调用它。 例如:

 <?php $exec = exec('boxcutter -f image.png'); // -f is full screen option