加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php上传图片并压缩的达成方法

发布时间:2022-06-13 16:51:54 所属栏目:PHP教程 来源:互联网
导读:本文实例讲解了php上传图片并压缩的实现方法,之前一篇《PHP实现图片上传并压缩》已经为大家进行了简单介绍,此次实现上传图片然后按照比例缩略图,指定缩略图的最大高度或者最大宽度,具体内容如下。 实现代码: switch ($type) { case image/pjpeg : case
  本文实例讲解了php上传图片并压缩的实现方法,之前一篇《PHP实现图片上传并压缩》已经为大家进行了简单介绍,此次实现上传图片然后按照比例缩略图,指定缩略图的最大高度或者最大宽度,具体内容如下。
 
  实现代码:
 
    switch ($type) {  
   case 'image/pjpeg' :  
   case 'image/jpeg' :  
    $extend = ".jpg";  
    break;  
   case 'image/gif' :  
    $extend = ".gif";  
    break;  
   case 'image/png' :  
    $extend = ".png";  
    break;  
   }  
   if (emptyempty ( $extend )) {  
   echo ( "警告!只能上传图片类型:GIF JPG PNG" );  
   exit ();  
   }  
   if ($size > $maxsize) {  
   $maxpr = $maxsize / 1000;  
   echo ( "警告!上传图片大小不能超过" . $maxpr . "K!" );  
   exit ();  
   }  
   if (move_uploaded_file ( $tmp_name, $updir . $newname . $extend )) {  
   return $updir . $newname . $extend;  
   }  
  }  
     
  function show_pic_scal($width, $height, $picpath) {  
   $imginfo = GetImageSize ( $picpath );  
   $imgw = $imginfo [0];  
   $imgh = $imginfo [1];  
      
   $ra = number_format ( ($imgw / $imgh), 1 ); //宽高比  
   $ra2 = number_format ( ($imgh / $imgw), 1 ); //高宽比  
      
     
    $newHeight = $imgh;  
   $newWidth = $imgw;  
   }  
   $newsize [0] = $newWidth;  
   $newsize [1] = $newHeight;  
      
   return $newsize;  
  }  
     
     
     
  function getImageInfo($src)  
  {  
   return getimagesize($src);  
  }  
  /**  
  * 创建图片,返回资源类型  
  * @param string $src 图片路径  
  * @return resource $im 返回资源类型  
  * **/
  function create($src)  
  {  
   $info=getImageInfo($src);  
   switch ($info[2])  
   {  
   case 1:  
    $im=imagecreatefromgif($src);  
    break;  
   case 2:  
    $im=imagecreatefromjpeg($src);  
    break;  
   case 3:  
    $im=imagecreatefrompng($src);  
    break;  
   }  
   return $im;  
  }  
  /**  
  * 缩略图主函数  
  * @param string $src 图片路径  
  * @param int $w 缩略图宽度  
  * @param int $h 缩略图高度  
  * @return mixed 返回缩略图路径  
  * **/
     
    //获取图片的基本信息  
   $info=getImageInfo($src);  
   $width=$info[0];//获取图片宽度  
   $height=$info[1];//获取图片高度  
   $per1=round($width/$height,2);//计算原图长宽比  
   $per2=round($w/$h,2);//计算缩略图长宽比  
     
   //计算缩放比例  
   if($per1>$per2||$per1==$per2)  
   {  
   //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先  
   $per=$w/$width;  
   }  
   if($per1<$per2)  
   {  
   //原图长宽比小于缩略图长宽比,则按照高度优先  
   $per=$h/$height;  
   }  
   $temp_w=intval($width*$per);//计算原图缩放后的宽度  
   $temp_h=intval($height*$per);//计算原图缩放后的高度  
   $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布  
   $im=create($src);  
   imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height);  
   if($per1>$per2)  
   {  
   imagejpeg($temp_img,$savepath, 100);  
   imagedestroy($im);  
   return addBg($savepath,$w,$h,"w");  
   //宽度优先,在缩放之后高度不足的情况下补上背景  
   }  
   if($per1==$per2)  
   {  
   imagejpeg($temp_img,$savepath, 100);  
   imagedestroy($im);  
   return $savepath;  
   //等比缩放  
   }  
   if($per1<$per2)  
   {  
   imagejpeg($temp_img,$savepath, 100);  
   imagedestroy($im);  
   return addBg($savepath,$w,$h,"h");  
   //高度优先,在缩放之后宽度不足的情况下补上背景  
   }  
  }  
  /**  
  * 添加背景  
      
   //获取目标图片信息  
   $info=getImageInfo($src);  
   $width=$info[0];//目标图片宽度  
   $height=$info[1];//目标图片高度  
   $img=create($src);  
   if($fisrt=="wh")  
   {  
   //等比缩放  
   return $src;  
   }  
   else
   {  
   if($fisrt=="w")  
   {  
    $x=0;  
    $y=($h-$height)/2;//垂直居中  
   }  
   if($fisrt=="h")  
   {  
    $x=($w-$width)/2;//水平居中  
    $y=0;  
   }  
   imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100);  
   imagejpeg($bg,$src,100);  
   imagedestroy($bg);  
   imagedestroy($img);  
   return $src;  
   }  
     
  }  
     
     
  ?> 

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读