我正在尝试使用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函数“
我将对此进行更多测试,看看我是否可以提出多显示器友好的代码.