我正在尝试 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

有帮助吗?

解决方案

我查看了sourcegrabscreen()的源代码;

此时,我认为它失败了,因为我们都有多显示器设置。

当前代码调用GetDC(0),根据 http://msdn.microsoft.com/en-us /library/dd144871(VS.85).aspx 应该返回“整个屏幕”的设备上下文,但是 “要获取特定显示器的DC, 使用EnumDisplayMonitors和CreateDC函数“

我将对此进行更多测试,看看我是否可以提供多显示器友好代码。

其他提示

我看到Hugh目前已经检查了答案,并且好奇是否有人在过去3年内解决了这个问题?我遵循了“允许服务与桌面交互”。步骤,我正在笔记本电脑上运行,我偶尔也会连接第二台显示器。虽然当我使用我试图使用的脚本时,我只会在我的笔记本电脑主显示器上。我正在使用WAMP Server 2.2运行Windows 7 64位。检查php_gd2扩展名,它可以保存文件。但无论我尝试什么,以及所有的发现,我都无法正确截取这个东西,它总是会返回黑屏。我也尝试了这个例子中提供的基本代码(虽然我的方法几乎完全相同)。

如果有人能找到我的解决方案,请告诉我,我会很高兴。我甚至尝试在XP和Vista的兼容模式下运行WAMP:/(我在某处看到图像抓取功能仅适用于XP / Vista。最终我试图创建一个小的轻量级脚本,我可以在后台运行以监控我正在进行的项目的进展,它只是截取屏幕截图,将其缩小一点,在我工作结束时,它会压缩文件并通过电子邮件将其传递给用户。其他所有工作都很容易,但这是我第一次使用imagegrabscreen功能,虽然听起来很酷,但它现在让我感到紧张,因为我无法让它完成它的工作...... :(

我重复了这个错误 - 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()的来源。

我认为 imagegrabscreen()仅适用于Windows XP而非Vista。
你应该查看这个链接

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top