1

我正在使用代码

<?php
echo 'Hi';
$im = imagegrabscreen();
imagejpeg($im, "myscreenshot.jpg");
imagedestroy($im);
?>

这是创建一个黑色背景的图像 myscreenshot.jpg。但我期待一个白色背景的 jpeg 图像,上面写着你好

4

2 回答 2

1

这是一个常见问题,您会收到此错误,因为不允许 Apache 与您的桌面交互(注)

解决方案 1:Apache 权限:

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

解决方案2:我们使用“boxcutter”

 $exec = exec('boxcutter -f image.png');

解决方案 3:使用 COM seee ( http://php.net/manual/en/function.imagegrabwindow.php )

$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://stackoverflow.com"); // path to your URL 

/* Still working? */
while ($browser->Busy) {
    com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "myscreenshot.jpg");
imagedestroy($im);

我希望这有帮助

于 2012-04-18T08:04:20.510 回答
0

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

要在 Windows 上解决此问题,请右键单击我的电脑,选择管理/服务和应用程序/服务 - 找到 apache 服务(如 Apache2)并右键单击,选择属性 - 选择登录选项卡并选中“允许服务交互”带桌面的复选框。重启阿帕奇。

于 2012-04-18T08:02:28.980 回答