2012-06-01 4 views
0

안녕하세요 저는 jpg에서는 작동하지만 png에서는 작동하지 않는이 함수를 작성했습니다.사각형으로 이미지 크기를 조정하려면 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

모든 아이디어는이 문제를 해결하기 위해?

감사합니다.

+0

내 말은'$ ext'는 jpg, gif, png가 아니므로 코드가 이미지 자원 *을 전혀 만들지 않는다는 것입니다. –

+0

당신의 오류는'imagecolortransparent()'는 오류를 반환했지만, 이것은 코드에 포함되어 있지 않습니다 - 오류는 다른 곳에서 발생하지 않았습니까? – Death

답변

0

코드를 보면이 두 오류는 제공된 이미지가 .png이라는 사실과 아무런 관련이 없습니다.

.png 파일을 사용하는 버전에서 함수에 인수 (특히 $largeur)를 제공하지 않는 것 같습니다. 잘못된 크기는 $im_dest 리소스가 만들어지지 않았기 때문에 문제의 원인 일 가능성이 큽니다.

+0

getimagesize로 잘못된 크기를 얻을 수 있습니까? –

+0

어떻게하면 해결할 수 있습니까? –

관련 문제