php – 让imagegrabscreen工作

我正在尝试使用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函数“

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

上一篇:php – 如何检查jpeg是否适合内存?


下一篇:php – 使用alpha颜色的imagerotate不起作用