0

以下のコードを使用して、php で画像のサイズを変更しています。その関数内。$imgSource が true の場合に実行されます。これで何かが失敗した場合は、false を返したいと思います (imagecopyresampled が失敗したか、他の何かが失敗した可能性があります)。問題は、 return true または false ステートメントをどこに置くかです。今のところ、問題がなくても false を返します。そこにあるすべての if ステートメントを書く必要がありますか。これを行うための良い方法を提案してください。

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?

}
4

3 に答える 3

1

次のようなことをしますif(! your statement ) return false;

CODE 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);

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マニュアルを参照してください

于 2012-10-04T09:48:52.713 に答える
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?

}
于 2012-10-04T09:57:21.520 に答える
0

多くの画像関数は、成功または失敗に応じて true または false を返すため、次のようなことができます。

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

それをサポートする使用するすべての画像関数。

そして return true; を追加します。あなたの機能の最後に。

于 2012-10-04T09:58:22.550 に答える