2007年4月30日 星期一

PHP中製作圖片縮圖 - 優化篇

一隻程式寫出來雖然可以執行,不代表它就是最棒的
這隻縮圖程式從初版到這次總共改了六次
優化優化再優化
本次優化的地方再於
1. 簡化對複雜結構數據的存取
2. 優化內存使用

function makeThumbnail($arg_strFileName, $arg_intThumbWd = 100)
{
$aryImageInfo = getImageSize($arg_strFileName);
$intThumbHt = 0;
$aryImageFunction = array(
'image/gif' =>
array(
'CreateFrom'=>'imageCreateFromGIF',
'OutPutFrom'=>'imagegif'
),
'image/jpeg' =>
array(
'CreateFrom'=>'imageCreateFromJPEG',
'OutPutFrom'=>'imagejpeg'
),
'image/png' =>
array(
'CreateFrom'=>'imageCreateFromPNG',
'OutPutFrom'=>'imagepng'
),
'image/wbmp' =>
array(
'CreateFrom'=>'imageCreateFromWBMP',
'OutPutFrom'=>'imagewbmp'
)
);
if(array_key_exists($aryImageInfo['mime'],$aryImageFunction))
{
header('Content-type: ' . $aryImageInfo['mime']);
$aryExecuteImgFunction =& $aryImageFunction[$aryImageInfo['mime']];
$objImageCreate = $aryExecuteImgFunction['CreateFrom']($arg_strFileName);
$intThumbHt = round($aryImageInfo[1] * $arg_intThumbWd / $aryImageInfo[0]);
$objTargetImageCreate = imageCreateTrueColor($arg_intThumbWd,$intThumbHt);
imageCopyResampled($objTargetImageCreate, $objImageCreate, 0, 0, 0, 0, $arg_intThumbWd, $intThumbHt, $aryImageInfo[0], $aryImageInfo[1]);
$aryExecuteImgFunction['OutPutFrom']($objTargetImageCreate);

imageDestroy($objImageCreate);
imageDestroy($objTargetImageCreate);
}
else
{
echo $aryImageInfo['mime'].' images are not supported
';
exit;
}
}

出處

【下列文章您可能也有興趣】

沒有留言: