使用 php 从 imagegrabscreen() 创建图像的黑色背景


Black background on creating a image from imagegrabscreen() with php

我正在使用代码

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

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

这是一个常见问题,因为不允许

Apache 与您的桌面交互,因此您会收到此错误(注意)

解决方案1:阿帕奇权限:

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

解决方案2:我们使用"盒子切割机"

 $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);

我希望这有帮助

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

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