/*图片压缩函数
$route;//原图片的存放路径
$maxwidth="640";//设置图片的最大宽度
$maxheight="1136";//设置图片的最大高度
$name=$destination_folder.$current_time;//压缩图片存放路径加名称,不带后缀
$filetype="jpg";//图片类型
*/
public function resizeImage($route,$name,$filetype)
{
$imagesize = getimagesize(WEB_PATH .$route);//图片保存路径
$img_w = $imagesize[0];//获取原图宽
$img_h = $imagesize[1];//获取原图高
$proportion = $img_h/$img_w;
$maxwidth = 640;
//设置图片宽度 等比压缩
$maxheight = $maxwidth*$proportion;
$im = '';
if( !strcasecmp($filetype,"jpg") || !strcasecmp($filetype,"jpeg") ){
$im=imagecreatefromjpeg("$route");//参数是原图片的存放路径
}
else if( !strcasecmp($filetype,"png") ){
$im=imagecreatefrompng("$route");//参数是原图片的存放路径
}
else if( !strcasecmp($filetype,"gif") ){
$im=imagecreatefromgif("$route");//参数是原图片的存放路径
}
$pic_width = imagesx($im);
$pic_height = imagesy($im);
if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)){
if($maxwidth && $pic_width>$maxwidth){
$widthratio = $maxwidth/$pic_width;
$resizewidth_tag = true;
}
if($maxheight && $pic_height>$maxheight){
$heightratio = $maxheight/$pic_height;
$resizeheight_tag = true;
}
if($resizewidth_tag && $resizeheight_tag){
if($widthratio<$heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}
if($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;
$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;
if(function_exists("imagecopyresampled")){
$newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数
imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数
}
else{
$newim = imagecreate($newwidth,$newheight);
imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}
$name = $name.".".$filetype;
if( !strcasecmp($filetype,"jpg") || !strcasecmp($filetype,"jpeg") ){
imagejpeg($newim,$name);
}
else if( !strcasecmp($filetype,"png") ){
imagepng($newim,$name);
}
// else if( !strcasecmp($filetype,"gif") ){ //不处理GIF文件因为压缩后就不会动了,开注释可处理
// imagegif($newim,$name);
// }
imagedestroy($newim);
}
else{ //原图小于设定的最大长度和宽度,则不进行压缩,原图输出
$name = $name.".".$filetype;
if( !strcasecmp($filetype,"jpg") && !strcasecmp($filetype,"jpeg") ){
imagejpeg($im,$name);
}
else if( !strcasecmp($filetype,"png") ){
imagepng($im,$name);
}
// else if( !strcasecmp($filetype,"gif") ){ //不处理GIF文件因为压缩后就不会动了,开注释可处理
// imagegif($im,$name);
// }
}
}
tp5 调用
if ($file) {
$info = $file->move(WEB_PATH . 'uploads');
if ($info) {
$imgpath = 'uploads/'.$info->getSaveName();
$date_path = 'uploads/'.date('Ymd');
if(!file_exists($date_path)){
mkdir($date_path,0777,true);
}
$img_name = $info->getFilename();
$type = $info->getExtension();
$img_name=explode('.', $img_name);
$img_name=$img_name[0];
$thumb_path = $date_path.'/'.$img_name;
$thumb_path_name = $thumb_path.'.'.$type ;
//压缩后的图片名字 替换原图的名字 保存
$this->resizeImage($imgpath,WEB_PATH.$thumb_path,$type);