黑马程序员技术交流社区

标题: 【广州PHP】PHP实现图片的等比缩放 [打印本页]

作者: gz_xudada    时间: 2018-8-3 21:21
标题: 【广州PHP】PHP实现图片的等比缩放
本帖最后由 gz_xudada 于 2018-8-3 21:25 编辑

PHP实现图片的等比缩放

本文主要介绍了PHP实现图片的等比缩放功能,结合实例形式分析了php图片等比例缩放操作技巧
等比缩放函数(以保存的方式实现)
代码:
[PHP] 纯文本查看 复制代码
 <?php
  /**
  * 等比缩放函数(以保存的方式实现)
  * @param string $picname 被缩放的处理图片源
  * @param int $maxx 缩放后图片的最大宽度
  * @param int $maxy 缩放后图片的最大高度
  * @param string $pre 缩放后图片名的前缀名
  * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
  */
  function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
      $info = getimageSize($picname); //获取图片的基本信息
      $w = $info[0];//获取宽度
      $h = $info[1];//获取高度
      //获取图片的类型并为此创建对应图片资源
      switch($info[2]){
          case 1: //gif
              $im = imagecreatefromgif($picname);
          break;
          case 2: //jpg
              $im = imagecreatefromjpeg($picname);
          break;
          case 3: //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);
      //执行等比缩放
      imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
      //输出图像(根据源图像的类型,输出为对应的类型)
      $picinfo = pathinfo($picname);//解析源图像的名字和路径信息
      $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
      switch($info[2]){
          case 1:
              imagegif($nim,$newpicname);
          break;
          case 2:
              imagejpeg($nim,$newpicname);
          break;
          case 3:
              imagepng($nim,$newpicname);
          break;
      }
      //释放图片资源
      imagedestroy($im);
      imagedestroy($nim);
      //返回结果
      return $newpicname;
  }
  //测试:
  echo imageUpdateSize("./images/logo.png",200,200,"ss_");
  ?>
测试效果:



作者: pysl    时间: 2018-8-15 12:56
很实用,谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2