繁体   English   中英

PHP imagegrabwindow GD库仅返回黑色图像

[英]PHP imagegrabwindow GD Library returns only black images

我希望有人可以帮助我和许多其他人解决这个问题...

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

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

在进一步的调查中,我了解到图像为黑色的原因之一是因为未打开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();
    ?> 

感谢下面的答案,我将imagepng更改为imagejpeg-但仍然得到黑色图像...

imagejpeg($im, "iesnap7.jpg");

任何帮助将非常感激!

谢谢

我将代码修改为:社交成瘾者仍然无法成功显示黑色图片!

  <?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。

如已声明要使用jpeg,请尝试以下方法

imagejpeg($im, "iesnap6.jpg"); 

代替

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

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

然后直接从浏览器访问脚本,看看是否可行?

这也是PHP.NET的另一个已知问题

在计算机上测试该功能时,它的速度非常慢。 返回图像大约需要2到3秒钟。 如果Apache服务无法访问“与桌面交互”,它也将无法工作

是否允许IIS和WWW Publishing服务与桌面交互?

我的电脑->管理->服务-> [IIS和WWWPub ...]-> LoginTab->允许与桌面交互

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

“内容类型”中的“ t”必须为大写。

之前:

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

后:

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

现在对我有用。

我在imagegrabwindow()中遇到问题。 最终,在发现问题后没有任何帮助之后,我决定看看是否可以编写现有的页面捕获插件或扩展脚本。 我发现Firefox的Pearl Crescent Page Saver可从命令行编写脚本。

http://pearlcrescent.com/products/pagesaver/doc/#commandline

基本版本给您的灵活性低于付费版本,但基本版本满足了我的需求。 它也可能在非Windows系统上运行,但是我还没有尝试过。

我很早就发现了这个问题:主要问题是我的专用服务器未安装32位图形卡。 这导致图像显示为黑色...

我更新了服务器硬件并安装了32位图形卡,现在它可以正常使用了。

我刚刚找到了可能最有帮助的答案。 摘自PHP.net上的评论者: http ://www.php.net/manual/en/function.imagegrabscreen.php

  1. 右键点击桌面上的“ [我的]计算机”,然后选择“管理”
  2. 在“服务和应用程序”下,双击“服务”
  3. 找到您的Apache服务(可能是IIS),然后右键单击,选择“属性”。
  4. 在“登录”标签上,确保启用了“允许服务与桌面交互”
  5. 单击“确定”,关闭,然后重新启动Apache(或IIS)

如果没有,Apache将无法与您的计算机桌面通信并返回空白图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM