我正在尝试使用imagegrabscreen
(GD功能)来使用我的Apache / Vista PC。
我正在使用以下代码:
<?php
$im = imagegrabscreen();
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
此刻我得到了一个黑色的纯黑色图像,我的辅助显示器的尺寸(1024 * 768)。我正在使用Apache 2.2,作为服务运行,带有UAC的Vista SP1,PHP 5.2.8和GD(下面的信息)。我已经按照imagegrabscreen
页面上有关允许Apache访问桌面的说明进行操作。我也重新启动了服务和apache服务器。我使用imagegrabwindow
得到了相同的结果。
这是一个错误(其他人在运行此方法时遇到了什么问题吗?)或者我做错了什么?
Array
(
[GD Version] => bundled (2.0.34 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] => 1
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[JIS-mapped Japanese Font Support] =>
)
Apache服务登录详情:
http://www.kalleload.net/uploads/maogfnfnczfh.png http://www.kalleload.net/uploads/maogfnfnczfh.png
答案 0 :(得分:3)
我看到Hugh目前已经检查了答案,并且好奇是否有人在过去3年内解决了这个问题?我已经遵循“允许服务与桌面交互”的步骤,并且我正在笔记本电脑上运行,我偶尔会连接第二台显示器。虽然当我使用我试图使用的脚本时,我只会在我的笔记本电脑主显示器上。我正在使用WAMP Server 2.2运行Windows 7 64位。检查php_gd2扩展名,它可以保存文件。但无论我尝试什么,以及所有的发现,我都无法正确截取这个东西,它总是会返回黑屏。我也尝试了这个例子中提供的基本代码(尽管我的方法几乎完全相同)。
如果有人能找到我的解决方案,请告诉我,我会很高兴。我甚至尝试在XP和Vista的兼容模式下运行WAMP:/(我在某处看到图像抓取功能仅适用于XP / Vista。最终我试图创建一个小的轻量级脚本,我可以在后台运行以监控我正在进行的项目的进展,它只是截取屏幕截图,将其缩小一点,在我工作结束时,它会压缩文件并通过电子邮件将其传递给用户。其他所有工作都很容易,但这是我第一次使用imagegrabscreen功能,虽然听起来很酷,但它现在让我感到紧张,因为我无法让它完成它的工作...... :(
答案 1 :(得分:1)
我查看了sourcegrabscreen()的源代码;
此时,我认为它失败了,因为我们都有多显示器设置。
当前代码调用GetDC(0),根据 http://msdn.microsoft.com/en-us/library/dd144871(VS.85).aspx 应该返回“整个屏幕”的设备上下文,但是 “要获得特定显示器的DC, 使用EnumDisplayMonitors和CreateDC函数“
我将对此进行更多测试,看看我是否可以提供多显示器友好代码。
答案 2 :(得分:0)
我重复了这个错误 - WinXP SP3,作为服务运行的Apache 2.2.11,捆绑了PHP 5.2.8,GD 2.0.34。
我允许与桌面交互并重新启动服务。在双屏幕设置(主要:1440x900,辅助:1920x1200)上,我得到一个与主屏幕大小相同的黑色矩形。我有错误报告(E_ALL | E_STRICT)并且XDebug没有报告任何错误。
还有其他人在乎这个吗?最重要的变量似乎是OS(Win2000 / WinXP / Win2003 / Vista)和PHP版本(5.2.2 / .3 / .4 / .5 / .6 / .8)。
我将看一下sourcegrabscreen()的来源。
答案 3 :(得分:0)
我认为imagegrabscreen()
仅适用于Windows XP而非Vista
你应该查看link