2012-10-04 34 views
0

我使用下面的代码重新调整大小的图像在PHP中。它的内部功能。它在$ imgSource为true时执行。如果这个失败了,我希望它返回false(也许imagecopyresampled失败或其他失败)。事情是,我在哪里放置返回真或假陈述。现在即使事情好转也不会返回错误。我是否必须写出如果所有在那里的声明。你能否建议一个好方法来做到这一点。我在哪里添加返回true或false在这里

if ($imgSource) 
{ 

list($width,$height)=getimagesize($thisImage); 

$dispImageWidth=500; 
$dispImageHeight=($height/$width)*$dispImageWidth; 
$tempDisplayImage=imagecreatetruecolor($dispImageWidth,$dispImageHeight); 

$thumbImageWidth=250; 
$thumbImageHeight=($height/$width)*$thumbImageWidth; 
$tempThumbImage=imagecreatetruecolor($thumbImageWidth,$thumbImageHeight); 

imagecopyresampled($tempDisplayImage,$imgSource,0,0,0,0,$dispImageWidth,$dispImageHeight,$width,$height); 
imagecopyresampled($tempThumbImage,$imgSource,0,0,0,0,$thumbImageWidth,$thumbImageHeight,$width,$height); 

$displayImageTarget = $thisPath.'disp_'.$fileName; 
$thumbImageTarget = $thisPath.'thumb_'.$fileName; 

imagejpeg($tempDisplayImage,$displayImageTarget,100); 
imagejpeg($tempThumbImage,$thumbImageTarget,100); 

imagedestroy($imgSource); 
imagedestroy($tempDisplayImage); 
imagedestroy($tempThumbImage); 
unlink($thisImage); 

//Where do I put the return true or false? 

} 
+2

将它包裹在try catch中,在try的结尾添加return true,在catch中返回false。尽管如此,这依赖于gd函数抛出异常。 –

回答

1

做一些东西一样if(! your statement) return false;

CODE 如果($ imgSource) {

list($width,$height)=getimagesize($thisImage); 

$dispImageWidth=500; 
$dispImageHeight=($height/$width)*$dispImageWidth; 
$tempDisplayImage=imagecreatetruecolor($dispImageWidth,$dispImageHeight); 

$thumbImageWidth=250; 
$thumbImageHeight=($height/$width)*$thumbImageWidth; 
$tempThumbImage=imagecreatetruecolor($thumbImageWidth,$thumbImageHeight); 

if(! imagecopyresampled($tempDisplayImage,$imgSource,0,0,0,0,$dispImageWidth,$dispImageHeight,$width,$height)) return false; 
if(! imagecopyresampled($tempThumbImage,$imgSource,0,0,0,0,$thumbImageWidth,$thumbImageHeight,$width,$height)) return false; 

$displayImageTarget = $thisPath.'disp_'.$fileName; 
$thumbImageTarget = $thisPath.'thumb_'.$fileName; 

if(!imagejpeg($tempDisplayImage,$displayImageTarget,100)) return false; 
if(!imagejpeg($tempThumbImage,$thumbImageTarget,100)) return false; 

if(!imagedestroy($imgSource)) return false; 
if(!imagedestroy($tempDisplayImage)) return false; 
if(!imagedestroy($tempThumbImage)) return false; 
if(!unlink($thisImage)) return false; 

return true; 


} 

,如果你只是想检查未设置

只是做return unlink($thisImage);

unlink成功返回TRUE或失败时返回FALSE。请参阅php manual

+0

不确定这是否真的回答OP问题? –

+0

@JonStirling:对不起,我误解了Que – Champ

1

您可以使用'Try catch'在出现问题时返回false。

if ($imgSource) 
{ 

try 

{ 


list($width,$height)=getimagesize($thisImage); 

$dispImageWidth=500; 
$dispImageHeight=($height/$width)*$dispImageWidth; 
$tempDisplayImage=imagecreatetruecolor($dispImageWidth,$dispImageHeight); 

$thumbImageWidth=250; 
$thumbImageHeight=($height/$width)*$thumbImageWidth; 
$tempThumbImage=imagecreatetruecolor($thumbImageWidth,$thumbImageHeight); 

imagecopyresampled($tempDisplayImage,$imgSource,0,0,0,0,$dispImageWidth,$dispImageHeight,$width,$height); 
imagecopyresampled($tempThumbImage,$imgSource,0,0,0,0,$thumbImageWidth,$thumbImageHeight,$width,$height); 

$displayImageTarget = $thisPath.'disp_'.$fileName; 
$thumbImageTarget = $thisPath.'thumb_'.$fileName; 

imagejpeg($tempDisplayImage,$displayImageTarget,100); 
imagejpeg($tempThumbImage,$thumbImageTarget,100); 

imagedestroy($imgSource); 
imagedestroy($tempDisplayImage); 
imagedestroy($tempThumbImage); 
unlink($thisImage); 

return true; 

} 

catch(Exception $e) 

{ 


    return false; 

} 
//Where do I put the return true or false? 

} 
0

大量的图像函数返回true或false取决于成功或失败,所以你可以这样做:

if(imagejpeg($tempDisplayImage,$displayImageTarget,100)==false){ 
    return false; 
} 

对于您使用支持它的每一个图像的功能。

然后添加返回true;在你的函数结束时。