(written at 2014-01-13 16:30:18)
function imageSize($img,$maxw,$maxh,$pri="s_"){
//获取源图像信息
$imginfo = getimagesize($img);
//获取图片的尺寸
$w = $imginfo[0]; //200 100
$h = $imginfo[1]; //100 50
//根据类型创建图像源
switch($imginfo[2]){
case 1: //gif
$srcim = imagecreatefromgif($img);// 创建源图像源(被压缩)
break;
case 2: //jpg
$srcim = imagecreatefromjpeg($img);// 创建源图像源(被压缩)
break;
case 3: //png
$srcim = imagecreatefrompng($img);// 创建源图像源(被压缩)
break;
default:
die("图片源类型错误!");
}
//计算缩放后的尺寸
if($maxw/$w>$maxh/$h){
$nw=$w*($maxh/$h);
$nh=$maxh;
}else{
$nw=$maxw;
$nh=$h*($maxw/$w);
}
//创缩放后的图片源
$resim = imagecreatetruecolor($nw,$nh);// 存放结果的图像源
//2. 开始缩放
$alpha = imagecolorallocatealpha($resim, 0, 0, 0, 127);
imagefill($resim, 0, 0, $alpha);
imagecopyresized($resim,$srcim,0,0,0,0,$nw,$nh,$w,$h);
imagesavealpha($resim, true);
//3. 输出图像(复制型输出)
$fileinfo = pathinfo($img);
//根据类型输出新图像
switch($imginfo[2]){
case 1: //gif
$filePath = imagegif($resim,$fileinfo["dirname"]."/".$pri.$fileinfo["basename"]);
break;
case 2: //jpg
$filePath = imagejpeg($resim,$fileinfo["dirname"]."/".$pri.$fileinfo["basename"]);
break;
case 3: //png
$filePath = imagepng($resim,$fileinfo["dirname"]."/".$pri.$fileinfo["basename"]);
break;
}
//4. 销毁源图像
imagedestroy($srcim);
imagedestroy($resim);
return $filePath;
}
使用方法:
imageSize(源图片路径,目标图片宽度,目标图片高度,目标图片相对于源图片的名字加前缀);
返回结果是当前目录下生成图片后的绝对路径。
注意:需要使用保留透明的时候输出文件只限PNG格式。