zoukankan      html  css  js  c++  java
  • PHP实现图片的等比缩放和Logo水印功能示例

    文章来自于:脚本之家

    文章链接:https://www.jb51.net/article/112909.htm

    这篇文章主要介绍了PHP实现图片的等比缩放和Logo水印功能,结合实例形式分析了php图片等比例缩放及logo水印添加操作技巧,需要的朋友可以参考下

     

    等比缩放函数(以保存的方式实现)

    /**
     * 等比缩放函数(以保存的方式实现)
     * @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/bg.jpg",200,200,"ss_"); // ./images/s_bg.jpg
    

     为一张图片添加上一个logo图片水印(以保存的方式实现)

    /**
     * 为一张图片添加上一个logo图片水印(以保存的方式实现)
     * @param string $picname 被处理图片源
     * @param string $logo 水印图片
     * @param string $pre 处理后图片名的前缀名
     * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg
     */
    function imageUpdateLogo($picname,$logo,$pre="n_"){
      $picnameinfo = getimageSize($picname); //获取图片源的基本信息
      $logoinfo = getimageSize($logo); //获取logo图片的基本信息
      //var_dump($logoinfo);
      //根据图片类型创建出对应的图片源
      switch($picnameinfo[2]){
        case 1: //gif
          $im = imagecreatefromgif($picname);
          break;
        case 2: //jpg
          $im = imagecreatefromjpeg($picname);
          break;
        case 3: //png
          $im = imagecreatefrompng($picname);
          break;
        default:
          die("图片类型错误!");
      }
      //根据logo图片类型创建出对应的图片源
      switch($logoinfo[2]){
        case 1: //gif
          $logoim = imagecreatefromgif($logo);
          break;
        case 2: //jpg
          $logoim = imagecreatefromjpeg($logo);
          break;
        case 3: //png
          $logoim = imagecreatefrompng($logo);
          break;
        default:
          die("logo图片类型错误!");
      }
      //执行图片水印处理
      imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);
      //输出图像(根据源图像的类型,输出为对应的类型)
      $picinfo = pathinfo($picname);//解析源图像的名字和路径信息
      $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
      switch($picnameinfo[2]){
        case 1:
          imagegif($im,$newpicname);
          break;
        case 2:
          imagejpeg($im,$newpicname);
          break;
        case 3:
          imagepng($im,$newpicname);
          break;
      }
      //释放图片资源
      imagedestroy($im);
      imagedestroy($logoim);
      //返回结果
      return $newpicname;
    }
    //测试
    echo imageUpdateLogo("./images/bg2.jpg","./images/s_1.png");
    

    PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用:

    在线图片转换BASE64工具:
    http://tools.jb51.net/transcoding/img2base64

    ICO图标在线生成工具:
    http://tools.jb51.net/aideddesign/ico_img

    在线Email邮箱图标制作工具:
    http://tools.jb51.net/email/emaillogo

    在线图片格式转换(jpg/bmp/gif/png)工具:
    http://tools.jb51.net/aideddesign/picext

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

    希望本文所述对大家PHP程序设计有所帮助。

  • 相关阅读:
    手把手教你利用create-nuxt-app脚手架创建NuxtJS应用
    初识NuxtJS
    webpack打包Vue应用程序流程
    用选择器代替表格列的筛选功能
    Element-UI
    Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
    Sparse Principal Component Analysis via Rotation and Truncation
    Generalized Power Method for Sparse Principal Component Analysis
    Sparse Principal Component Analysis via Regularized Low Rank Matrix Approximation(Adjusted Variance)
    Truncated Power Method for Sparse Eigenvalue Problems
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9388877.html
Copyright © 2011-2022 走看看