【问题标题】:Image create PHP on Internet Explorer在 Internet Explorer 上创建 PHP 图像
【发布时间】:2012-11-26 15:25:58
【问题描述】:

我对 PHP 图像和 Web 浏览器有一个奇怪的问题..

首先,我知道 PHP 是一种服务器端语言,它与浏览器无关,但为什么我的脚本可以在 Firefox、Safari 或 Chrome 上运行,而不是在 Internet Explorer 上运行??

    function image_effect_negative($counter,$file,$layer){


$image = "../images/tmp/$file/layer_$layer.png";


$img = imagecreatefrompng($image);

if($layer == 0){
    $path = "../images/tmp/$file/$counter".".jpg";
}else{
    $path = "../images/tmp/$file/layer_$layer.png";
    $path2 = "../images/tmp/$file/tmp_layer_$layer.png";
}

if($img && imagefilter($img, IMG_FILTER_NEGATE)){
    //imagepng($img, $path);

    if($layer > 0)
        imagepng($img, $path2);
    else
        imagejpeg($img,$path);

    imagedestroy($img);

    return $img;
}

}

我使用上面的代码,加载 layer_0.png(例如)并在其上使用图像过滤器。使用其他所有浏览器都会创建具有效果的图像,但不是在 IE 中!

怎么了??

【问题讨论】:

  • 尝试将生成的 PNG 保存在 firefox/chrome 中,然后直接在 IE 中加载该图像。可能是您的图片损坏/不兼容,只有部分浏览器能够打开它。
  • 为什么最后返回$img?那时这是一个无效的 GD 句柄,因为您事先已对其进行了 imagedestroy() 处理
  • 什么版本的IE?如果小于 7,则不支持 alpha 透明 PNG 的

标签: php image internet-explorer


【解决方案1】:

您使用的是哪个版本的 Internet Explorer?众所周知,旧版本的 IE 不适用于 png 等透明度类型。尝试将 PNG 修复程序添加到您的 IE 页面,看看是否可以修复它。您可以在此处找到 PNG 修复程序:

http://jquery.andreaseberhard.de/pngFix/

【讨论】:

  • 是的,谢谢,但我已经知道了!问题不是显示图像,而是创建它!
【解决方案2】:

在此之前销毁图像时,您期望返回什么?

  imagedestroy($img);    // why are you destroying the image?

  return $img;
}

另外,您是否设置了正确的标题以将图像返回给浏览器?

【讨论】:

  • 对不起,返回的 $img 只是为了一些预测试,忘记了!我不想将图像显示到浏览器,而是将其保存为文件!
【解决方案3】:

我的猜测是您没有生成 HTTP 标头。一些浏览器能够检测http://example.com/foo.php 是否包含PNG 或JPEG 文件,而其他浏览器则不能。很简单:

if($layer > 0){
    header('Content-Type: image/png');
    imagepng($img, $path2);
}
else{
    header('Content-Type: image/jpeg');
    imagejpeg($img,$path);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 2013-11-09
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多