2011-04-21 2 views
1

다음 코드는 $ image/$ imgsrc의 경로에 공백이 있으면 eroor를 반환합니다. 예를 들어 www.domain.com/my pic.gif이미지 경로에 공백이 있으면 코드에서 오류를 반환합니다. 코드를 통해이를 어떻게 수정합니까?

% 20을 추가하면 제대로 작동합니다. 경로를 수정하지 않고 이미지를 올바르게 실행할 수있는 공간이있을 때이를 어떻게 수정할 수 있습니까?

감사합니다.

<?php function resizeImg($imgsrc ,$maxW='*', $maxH='*', $allowScaleUp=0, $returnHTML="alt='image'"){ 
if($s=getimagesize($imgsrc)){ 
    $oW=$s[0];$oH=$s[1]; 
    if(($oW>$maxW && $maxW!='*') || ($oH>$maxH && $maxH!='*') || $allowScaleUp){//if resize is needed: 
    if($maxW && $maxH=='*'){ //constrain by width: 
    $proportion=$oH/$oW; 
    $w=$maxW; 
    $h=$maxW*$proportion; 
    }else if($maxH && $maxW=='*'){ //constrain by height: 
    $proportion=$oW/$oH; 
    $h=$maxH; 
    $w=$maxH*$proportion; 
    }else if(!$maxW && $maxH){ //constrain by smallest side: 
    return($oW>$oH ? resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML) : resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML)); 
    }else if($maxW && !$maxH){ //constrain by largest side: 
    return($oW>$oH ? resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML) : resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML)); 
    }else{ 
    return($maxW>$maxH ? resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML) : resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML)); 
    } 
    }else{ 
    $w=$oW;$h=$oH; 
    } 
    //echo "orig: ".$oW."x:".$oH."<br />max: ".$maxW."x".$maxH."<br />new: ".$w."x".$h."<br />"; //debug 
    $w=round($w); $h=round($h); 
    return ($returnHTML ? "<img src='$imgsrc' width='$w' height='$h' $returnHTML />" : array(0=>$w,1=>$h,"width"=>$w,"height"=>$h)); 
}else{//file does not exist or is not an image: 
    return false; 
} 
} 
?> 


<?php echo resizeImg($picture,250,'*') ?> 
+0

당신은 더 이상 예를 줄 수, 당신은 우리가 전체 사이트가 무엇을하고 있는지 이해하는만큼 코드가 없습니다. –

+2

아 ... 내 눈 ..! –

+0

어떤 오류가 반환됩니까? –

답변

1

그렇다면 getimagesize에는 URI 바인딩을 사용하는 경우 올바른 올바른 URI가 필요합니다. 따라서 공백을 %20 (see example #3)으로 바꿉니다.

urlencode 엔티티의 모든 종류의 인코딩, 그래서 내 추천은 다음과 같습니다 if ($s = getimagesize(str_replace(' ', '%20', $imgsrc))) {

+0

그럼 수동 일 뿐이니까? – EnexoOnoma

+1

@Punkis : 실례합니다. –

+0

나는 그것이 당신이 수동으로해야만한다는 것을 의미합니까? – EnexoOnoma

관련 문제