封装图片处理类(缩略图)

mac2022-06-30  25

<?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['config']['admin_goods_thumb']['width'] : $width;            $this->thumb_height = ($height == 0) ? $GLOBALS['config']['admin_goods_thumb']['height'] : $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 = '原图不存在!';                return false;            }            //打开原图资源            //获取能够使用的后缀            $ext = $this->getFunctionName($src);    //gif            //拼凑函数名            $open = 'imagecreatefrom' . $ext;        //imagecreatefromgif            $save = 'image' . $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 = 'thumb_' . basename($src);                $save($dst_img,$path . '/' . $thumb_name);                //保存成功                return $thumb_name;            }else{                //采样失败                $this->thumb_error = '缩略图采样失败!';                return false;            }        }        /*         * 获取文件要调用的函数名         * @param1 string $file,文件名字         * @return 通过文件后缀名得到的函数字符串        */        private function getFunctionName($file){            //得到文件的后缀            $file_info = pathinfo($file);                $ext = $file_info['extension'];            //后缀:gif,png,jpg,jpeg,pjpeg            //imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng            //定义一个数组保存函数名            $func = array(                'gif' => 'gif',                    'png' => 'png',                    'jpg' => 'jpeg',                    'jpeg' => 'jpeg',                    'pjpeg' => 'jpeg'            );            //返回值            return $func[$ext];        }    }

转载于:https://www.cnblogs.com/shaohuixia/p/5427212.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)