Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP imagegrabwindow GD库仅返回黑色图像_Php_Gd - Fatal编程技术网

PHP imagegrabwindow GD库仅返回黑色图像

PHP imagegrabwindow GD库仅返回黑色图像,php,gd,Php,Gd,我希望有人能帮助我和其他很多人解决这个问题 我想使用php的imagegrabwindow函数部分和GD库创建一个网站的屏幕截图 在花了一整天的时间实现代码后,我终于可以捕获图像并将其保存到文件中,但图像是黑色的,而不是我期望的图像 在进一步的调查中,我了解到图像为黑色的原因之一是apache没有打开以与桌面交互-并且因为这会创建一个黑色图像-问题是我没有将apache作为服务器运行我正在运行IIS 6 服务中是否有允许与桌面交互的设置?如果有人能告诉我正确的方向吗 <?php $

我希望有人能帮助我和其他很多人解决这个问题

我想使用php的imagegrabwindow函数部分和GD库创建一个网站的屏幕截图

在花了一整天的时间实现代码后,我终于可以捕获图像并将其保存到文件中,但图像是黑色的,而不是我期望的图像

在进一步的调查中,我了解到图像为黑色的原因之一是apache没有打开以与桌面交互-并且因为这会创建一个黑色图像-问题是我没有将apache作为服务器运行我正在运行IIS 6

服务中是否有允许与桌面交互的设置?如果有人能告诉我正确的方向吗

<?php
    $browser = new COM("InternetExplorer.Application");
    $handle = $browser->HWND;
    $browser->Visible = true;
    $browser->Fullscreen = true;
    $browser->Navigate("http://localhost/site/advertise/index.asp");

    /* Still working? */
    while ($browser->Busy) {
        com_message_pump(4000);
    }
    $im = imagegrabwindow($handle, 0);
    imagepng($im, "iesnap6.jpg");
    $browser->Quit();
    ?> 
任何帮助都将不胜感激

谢谢

我已经把代码改成这样:社交上瘾者仍然没有成功,图像显示为黑色

  <?php
 header('Content-type: image/jpeg');
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://localhost/advertise/index.asp");

/* Still working? */
while ($browser->Busy) {
    com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagejpeg($im," file2.jpg");
imagedestroy($im);
?> 


社交成瘾-我添加了标题-我还不断更改file1.jpg名称,以确保它没有使用黑色缓存图像。。。还是不走运

我以前遇到过这个问题,当您尝试加载图像或将图像转换为不正确的类型时,经常会出现这个问题

我想可能跟这条线有关

imagepng($im, "iesnap6.jpg");
您正在将其保存为png,并在此处将其命名为jpg

按照您所说的,尝试以下方法

反而

尝试在imagejpeg调用之前设置标头类型:

header('Content-type: image/jpeg');
然后直接从浏览器访问脚本,看看是否有效

另外,这是另一个已知的问题

这个功能在运行时非常缓慢 我在我的机器上测试它。信息技术 大约需要2到3秒钟才能完成 返回一个图像。它也不起作用 如果Apache服务没有 访问“与桌面交互”


IIS和WWW发布服务是否允许与桌面交互


我的计算机->管理->服务->[IIS和WWWPub…]->登录选项卡->允许与桌面交互

我遇到同样的问题,请尝试将颜色分辨率更改为32位,然后重试。

我在imagegrabwindow()方面遇到问题。最终,在没有找到解决问题的方法后,我决定看看是否可以编写一个现有的页面捕获插件或扩展。我发现Firefox的Pearl Crescent页面保护程序可以从命令行编写脚本


基本版的灵活性不如付费版,但基本版满足了我的需求。它也可以在非Windows系统上工作,但我没有尝试过。

我不久前就解决了这个问题:主要问题是我的专用服务器没有安装32位图形卡。这导致图像显示为黑色


我更新了我的服务器硬件并安装了一个32位图形卡,现在它可以正常工作了。

我刚刚找到了一个可能最有用的答案。摘自PHP.net上的评论:

  • 右键单击桌面上的“[My]Computer”,选择“管理”
  • 在“服务和应用程序”下,双击“服务”
  • 找到您的Apache服务(可能是IIS)并右键单击,选择属性
  • 在“登录”选项卡中,确保启用了“允许服务与桌面交互”
  • 单击“确定”,关闭,然后重新启动Apache(或IIS)

  • 如果您没有此选项,则Apache无法与您的计算机桌面通信,并返回一个空白图像。

    内容类型中的“t”需要大写

    之前:

    header('Content-type: image/jpeg');
    
    之后:

    header('Content-Type: image/jpeg');
    

    它现在适合我了。

    你想要png或jpg吗?试着设置标题信息,就像我在我的帖子上显示的那样,直接通过浏览器访问你的php文件,看看发生了什么不确定这是否有什么不同,但是在图像输出之前放置标题行ie imagejpeg()也许使用vista,您需要通过“dcomcnfg”设置InternetExplorer DCOM对象的exec权限。<完成此操作仍然没有luckI将其更改为imagepng($im,“iesnap6.pmh”);同样,我也会得到同样的黑色图像——我没有安装Appache,只是运行“IIS”作为我的Web服务器——这让我觉得我应该以某种方式允许IIS“与桌面交互”,我是说imagepng($im,“iesnap6.png”);(拼写更正)转到iis设置并允许与桌面交互。但是你刚才写的那句话与我的建议不符。。。imagejpeg($im,“file.jpg”);感谢SocialAddict-将其更改为imagejpeg($im,“file.jpg”);(仍然是黑色图像)在设置中,我找不到作为服务的IIS,并假设它是万维网发布服务,并允许“与桌面交互”重新启动,并确保服务正在运行-但仍然得到黑色图像…您需要在imagejpeg()之前调用浏览器提交命令调用-或者php.net上的示例似乎是:我正在运行Vista->Services->World Wide Web Publishing Service->LoginTab->允许与桌面交互,假设它与[IIS和WWWPub…]相同,则不要让[IIS和WWWPub…]重新启动我的计算机,并检查服务是否重新启动。。。仍然可以看到黑色的图片,谢谢你给我回复Jass——问题之一是我的服务器只能处理16位
    header('Content-type: image/jpeg');
    
    header('Content-Type: image/jpeg');