源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP生成等比缩略图类和自定义函数分享

  • 时间:2021-06-09 08:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP生成等比缩略图类和自定义函数分享
共有两种等比例缩略图方法可以借鉴 一、为类文件,实例化之后即可使用 二、为自定义方法,比较轻巧 类文件
[u]复制代码[/u] 代码如下:
$resizeimage = new resizeimage("./shawn.jpg", "200", "100", "0","../pic/shawnsun.jpg"); //实例化下面的类,就能生成缩略图 //其中,源文件和缩略图地址可以相同,200,100分别代表宽和高,第四个参数为可选 0不截图,1为截图
[u]复制代码[/u] 代码如下:
<?php class resizeimage{       //图片类型     public $type;     //实际宽度     public $width;     //实际高度     public $height;     //改变后的宽度     public $resize_width;     //改变后的高度     public $resize_height;     //是否裁图     public $cut;     //源图象     public $srcimg;     //目标图象地址     public $dstimg;     //临时创建的图象     public $im;          function resizeimage($img, $wid, $hei,$c,$dstpath){                $this--->srcimg = $img;           $this->resize_width = $wid;           $this->resize_height = $hei;           $this->cut = $c;                //图片的类型           $this->type = strtolower(substr(strrchr($this->srcimg,"."),1));           //初始化图象           $this->initi_img();           //目标图象地址           $this->dst_img($dstpath);           //W & H           $this->width  = imagesx($this->im);           $this->height = imagesy($this->im);           //生成图象           $this->newimg();           ImageDestroy ($this->im);      }          function newimg(){              //改变后的图象的比例         $resize_ratio = ($this->resize_width)/($this->resize_height);         //实际图象的比例         $ratio = ($this->width)/($this->height);                  if(($this->cut)=="1")         //裁图         {             if($ratio>=$resize_ratio)             //高度优先             {                 $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,                                    $this->resize_height, (($this->height)*$resize_ratio),                                    $this->height                 );                 ImageJpeg ($newimg,$this->dstimg);             }             if($ratio<$resize_ratio)             //宽度优先             {                 $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,                                    $this->resize_height, $this->width,                                    (($this->width)/$resize_ratio)                 );                 ImageJpeg ($newimg,$this->dstimg);             }               }         else         //不裁图         {             if($ratio>=$resize_ratio)             {                 $newimg = imagecreatetruecolor($this->resize_width,                                                ($this->resize_width)/$ratio                 );                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,                                    ($this->resize_width)/$ratio, $this->width,                                    $this->height                 );                 ImageJpeg ($newimg,$this->dstimg);             }             if($ratio<$resize_ratio)             {                 $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,                                                 $this->resize_height                 );                 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0,                                    ($this->resize_height)*$ratio,                                    $this->resize_height, $this->width,                                    $this->height                 );                 ImageJpeg ($newimg,$this->dstimg);             }         }    }          //初始化图象     function initi_img(){           if($this->type=="jpg")         {             $this->im = imagecreatefromjpeg($this->srcimg);         }         if($this->type=="gif")         {             $this->im = imagecreatefromgif($this->srcimg);         }         if($this->type=="png")         {             $this->im = imagecreatefrompng($this->srcimg);         }     }     //图象目标地址     function dst_img($dstpath){              $full_length  = strlen($this->srcimg);         $type_length  = strlen($this->type);         $name_length  = $full_length-$type_length;           $name = substr($this->srcimg,0,$name_length-1);         $this->dstimg = $dstpath;           //echo $this->dstimg;     } }   ?>
自定义方法
[u]复制代码[/u] 代码如下:
thumbs('shawn.jpg','shawnsun.jpg',100,100); //参数属性类似于方法一
[u]复制代码[/u] 代码如下:
<?php   function thumbs($FileName,$SaveTo,$SetW,$SetH){     $IMGInfo= getimagesize($FileName);     if(!$IMGInfo) return false;              if($IMGInfo['mime']== "image/pjpeg" || $IMGInfo['mime']=="image/jpeg"){         $ThisPhoto= imagecreatefromjpeg($FileName);     }elseif($IMGInfo['mime']== "image/x-png" || $IMGInfo['mime']== "image/png"){         $ThisPhoto= imagecreatefrompng($FileName);       }elseif($IMGInfo['mime']== "image/gif"){         $ThisPhoto=imagecreatefromgif($FileName);     }          $width=$IMGInfo[0];     $height=$IMGInfo[1];       $scalc = max($width/$SetW,$height/$SetH);     $nw = intval($width/$scalc);     $nh = intval($height/$scalc);     echo "缩略大小:w$nw,h$nh <br /-->";          if($SetW-$nw == 1){$nw = $SetW;}     if($SetH-$nh == 1){$nh = $SetH;}     echo "+修正1像素: w$nw,h$nh<br>";          //补宽     if($SetW-$nw > 0){         $nh = $nh +(($nh/$nw) * ($SetW-$nw));         echo "*需补宽".($SetW-$nw).",陪补高".(($nh/$nw) * ($SetW-$nw))."  <br>";          $nw = $SetW;     }     //补高     if($SetH-$nh > 0){         $nw = $nw + (($nw/$nh) * ($SetH-$nh));         echo "*需补高".($SetH-$nh).",陪补宽". (($nw/$nh) * ($SetH-$nh)) ."<br>";         $nh = $SetH;     }     $nw = intval($nw);     $nh = intval($nh);     echo "+修正大小:w$nw,h$nh<br>";          $px = ($SetW - $nw)/2;     $py = ($SetH - $nh)/2;     echo "窗口大小:w$SetW,h$SetH <br>";     echo "+偏移修正:x$px,y$py <br>";          $NewPhoto=imagecreatetruecolor($SetW,$SetH);     imagecopyresized($NewPhoto,$ThisPhoto,$px,$py,0,0,$nw,$nh,$width,$height);     ImageJpeg ($NewPhoto,$SaveTo);     return true; }      ?>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部