0

こんにちは私はjpgで機能するが、pngでは機能しないこの関数を作成しました。

これが私のコードです:

function vignette_carre($src, $dest, $largeur, $src_x, $src_y){ 

   $ext = explode(".", $src);
    $ext = strtolower(end($ext));

       if ($ext == 'jpg' or $ext == 'jpeg') {$im_src=imagecreatefromjpeg($src);} 
    elseif ($ext == 'gif') { $im_src=imagecreatefromgif($src);} 
    elseif ($ext == 'png') {$im_src=imagecreatefrompng($src);}

    if ($im_src=="") return; 
    if($src_x >= $src_y){ 
        $dim=$src_y; $verticale="1"; 
    }
    elseif($src_x <= $src_y){
        $dim=$src_x; $horizontale="1"; 
    }
    else{ 
        $dim=$src_x; 
    }
    if($verticale == "1"){
        $point_x_ref=($src_x/2)-($dim/2); 
        $point_y_ref="0";
    }
    if($horizontale == "1"){
        $point_x_ref="0";
        $point_y_ref=($src_y/2)-($dim/2);
    }
    $im_dest=imagecreatetruecolor($largeur, $largeur);  
    $im_dest= imagecolorallocate($im_dest, 255, 255, 255);  
    imagecopyresampled($im_dest, $im_src, 0, 0, $point_x_ref, $point_y_ref, $largeur, $largeur, $dim, $dim); 
    imagedestroy($im_src); 
           if ($ext == 'jpg' or $ext == 'jpeg') {
    imagejpeg($im_dest, $dest); 
        imagedestroy($im_dest); 
       } 
       elseif ($ext == 'gif') {
    imagegif($im_dest, $dest);
        imagedestroy($im_dest); 
          }
        elseif ($ext == 'png') {

                imagepng($im_dest, $dest);
        imagedestroy($im_dest); 
          } 
}

そして、エラーコンソールに次のエラーが表示されます。

[2] imagecolorallocate(): supplied argument is not a valid Image resource [2] imagecolortransparent(): supplied argument is not a valid Image resource

これを解決するためのアイデアはありますか?

ありがとう!

4

1 に答える 1

0

コードを見ると、これら 2 つのエラーは、提供された画像が.png.

ファイルを使用するバージョンでは、関数に引数 (特に引数$largeur) を正しく指定していないようです。無効なサイズはリソースが作成されていない.pngことを意味するため、これが問題の原因である可能性があります。$im_dest

于 2012-06-01T14:47:51.400 に答える