Heim  >  Artikel  >  Backend-Entwicklung  >  Vollständiges Beispiel einer in PHP gekapselten Bildverarbeitungsklasse (Miniaturansicht).

Vollständiges Beispiel einer in PHP gekapselten Bildverarbeitungsklasse (Miniaturansicht).

黄舟
黄舟Original
2017-02-28 09:08:031474Durchsuche

Das Beispiel in diesem Artikel beschreibt die in PHP gekapselte Bildverarbeitungsklasse (Miniaturansicht). Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

<?php
//图片处理工具类
class Image{
    //属性
    private $thumb_width; //缩略图的宽
    private $thumb_height;
    //错误属性
    public $thumb_error;
    //构造方法
    public function __construct($width = 0,$height = 0){
      $this->thumb_width = ($width == 0) ? $GLOBALS[&#39;config&#39;][&#39;admin_goods_thumb&#39;][&#39;width&#39;] : $width;
      $this->thumb_height = ($height == 0) ? $GLOBALS[&#39;config&#39;][&#39;admin_goods_thumb&#39;][&#39;height&#39;] : $height;
    }
    /*
     * 制作缩略图
     * @param1 string $src,原图路径,/uploads/20150122101010abcdef.gif
     * @param2 string $path,缩略图保存路径/uploads/thumb_20150122101010abcdef.gif
     * @return 缩略图的名字
    */
    public function makeThumb($src,$path){
      //判断原图是否存在
      if(!file_exists($src)){
        $this->thumb_error = &#39;原图不存在!&#39;;
        return false;
      }
      //打开原图资源
      //获取能够使用的后缀
      $ext = $this->getFunctionName($src); //gif
      //拼凑函数名
      $open = &#39;imagecreatefrom&#39; . $ext;    //imagecreatefromgif
      $save = &#39;image&#39; . $ext;          //imagegif
      //如果不清楚;echo $open,$save;exit;
      //可变函数打开原图资源
      $src_img = $open($src); //利用可变函数打开图片资源
      //imagecreatefromgif($src)
      //缩略图资源
      $dst_img = imagecreatetruecolor($this->thumb_width,$this->thumb_height);
      //背景色填充白色
      $dst_bg_color = imagecolorallocate($dst_img,255,255,255);
      imagefill($dst_img,0,0,$dst_bg_color);
      //宽高比确定宽高
      $dst_size = $this->thumb_width / $this->thumb_height;
      //获取原图数据
      $file_info = getimagesize($src);
      $src_size = $file_info[0]/$file_info[1];
      //求出缩略图宽和高
      if($src_size > $dst_size){
        //原图宽高比大于缩略图
        $width = $this->thumb_width;
        $height = round($width / $src_size);
      }else{
        $height = $this->thumb_height;
        $width = round($height * $src_size);
      }
      //求出缩略图起始位置
      $dst_x = round($this->thumb_width - $width)/2;
      $dst_y = round($this->thumb_height - $height)/2;
      //制作缩略图
      if(imagecopyresampled($dst_img,$src_img,$dst_x,$dst_y,0,0,$width,$height,$file_info[0],$file_info[1])){
        //采样成功:保存,将文件保存到对应的路径下
        $thumb_name = &#39;thumb_&#39; . basename($src);
        $save($dst_img,$path . &#39;/&#39; . $thumb_name);
        //保存成功
        return $thumb_name;
      }else{
        //采样失败
        $this->thumb_error = &#39;缩略图采样失败!&#39;;
        return false;
      }
    }
    /*
     * 获取文件要调用的函数名
     * @param1 string $file,文件名字
     * @return 通过文件后缀名得到的函数字符串
    */
    private function getFunctionName($file){
      //得到文件的后缀
      $file_info = pathinfo($file);
      $ext = $file_info[&#39;extension&#39;]; //后缀:gif,png,jpg,jpeg,pjpeg
      //imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng
      //定义一个数组保存函数名
      $func = array(
        &#39;gif&#39; => &#39;gif&#39;,
        &#39;png&#39; => &#39;png&#39;,
        &#39;jpg&#39; => &#39;jpeg&#39;,
        &#39;jpeg&#39; => &#39;jpeg&#39;,
        &#39;pjpeg&#39; => &#39;jpeg&#39;
      );
      //返回值
      return $func[$ext];
    }
}


Das Obige ist der Inhalt des vollständigen PHP-Beispiels Verarbeitungsklasse für gekapselte Bilder (Miniaturansichten). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn