0

PHP画像とWebブラウザに奇妙な問題があります。

まず、PHPはサーバー側の言語であり、ブラウザーとは関係がないことを知っていますが、なぜ私のスクリプトはInternet ExplorerではなくFirefox、Safari、またはChromeで機能するのでしょうか。

    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をロードし、その上でimagefilterを使用します。他のすべてのブラウザでは、効果のある画像が作成されますが、IEでは作成されません。

なにが問題ですか??

4

3 に答える 3

1

使用している Internet Explorer のバージョンは何ですか? 古いバージョンの IE は、png などの透明度タイプで動作しないことが知られています。IE のページに PNG フィクサーを追加してみて、問題が解決するかどうかを確認してください。ここでPNGフィクサーを見つけることができます:

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

于 2012-11-26T15:34:30.007 に答える
0

私の推測では、HTTP ヘッダーを生成していないということです。http://example.com/foo.phpPNG または 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 に答える
0

その前に画像を破壊すると何が返ってくると思いますか?

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

  return $img;
}

また、ブラウザに画像を返すように正しいヘッダーを設定しましたか?

于 2012-11-26T15:30:45.773 に答える