/**
*等比例缩放函数(以保存新图片的方式实现)
* @param string $picName 被缩放的处理图片源
* @param string $savePath 保存路径
* @param int $maxx 缩放后图片的最大宽度
* @param int $maxy 缩放后图片的最大高度
* @param string $pre 缩放后图片的前缀名
* @return $string 返回后的图片名称() 如a.jpg->s.jpg
*
**/
protected function scaleImg($picName,$savePath,$maxx= 800,$maxy= 450)
{
$info=getimageSize($picName);//获取图片的基本信息$w=$info[0];//获取宽度$h=$info[1];//获取高度if($w<=$maxx&&$h<=$maxy){
return$picName;
}
//获取图片的类型并为此创建对应图片资源switch($info[2]) {
case1://gif$im= imagecreatefromgif($picName);
break;
case2://jpg$im= imagecreatefromjpeg($picName);
break;
case3://png$im= imagecreatefrompng($picName);
break;
default:die("图像类型错误");
}
//计算缩放比例if(($maxx/$w) > ($maxy/$h)) {
$b=$maxy/$h;
} else {
$b=$maxx/$w;
}
//计算出缩放后的尺寸$nw=floor($w*$b);
$nh=floor($h*$b);
//创建一个新的图像源(目标图像)$nim= imagecreatetruecolor($nw,$nh);
//透明背景变黑处理
//2.上色$color=imagecolorallocate($nim,255,255,255);
//3.设置透明imagecolortransparent($nim,$color);
imagefill($nim,0,0,$color);
//执行等比缩放imagecopyresampled($nim,$im, 0, 0, 0, 0,$nw,$nh,$w,$h);
//输出图像(根据源图像的类型,输出为对应的类型)$picInfo=pathinfo($picName);//解析源图像的名字和路径信息$savePath=$savePath. "/" .date("Ymd")."/".$this->pre .$picInfo["basename"];
switch($info[2]) {
case1: imagegif($nim,$savePath);
break;
case2: imagejpeg($nim,$savePath);
break;
case3: imagepng($nim,$savePath);
break;
}
//释放图片资源imagedestroy($im);
imagedestroy($nim);
//返回结果return$savePath;
}
网友评论