0

我对 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 中!

怎么了??

4

3 回答 3

1

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

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

于 2012-11-26T15:34:30.007 回答
0

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

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

  return $img;
}

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

于 2012-11-26T15:30:45.773 回答
0

我的猜测是您没有生成 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);
}
于 2012-11-26T15:35:04.233 回答