当前位置:Gxlcms > PHP教程 > php缩略图类(附调用示例)

php缩略图类(附调用示例)

时间:2021-07-01 10:21:17 帮助过:15人阅读

本文介绍下,php实现的一个缩略图类,支持加载图片文件与加载图片字符串,按比例拉伸等,代码后面有调用示例供参考。

分享个php缩略图类,可以实现如下的功能:

1,支持加载图片文件和加载图片字符串 2,可以将缩略图输出到浏览器和保持缩略图文件 3,支持gif,png,jpeg类型的缩略 4,可以设定是否按比例来拉伸

代码如下:

maxWidth = $maxWidth;
                $this->maxHeight = $maxHeight;
                $this->scale = $scale;
                $this->inflate = $inflate;
                $this->types = array(
                    'image/jpeg',
                    'image/png',
                    'image/gif'
                );
                //加载MIME类型图像的函数名称
                $this->imgLoaders = array(
                    'image/jpeg'        =>      'imagecreatefromjpeg',
                    'image/png'         =>      'imagecreatefrompng',
                    'image/gif'         =>      'imagecreatefromgif'
                );
                //储存创建MIME类型图片的函数名称
                $this->imgCreators = array(
                    'image/jpeg'        =>      'imagejpeg',
                    'image/png'         =>      'imagepng',
                    'image/gif'         =>      'imagegif'
                );           
        }
        /**
         * 文件方式加载图片
         * @param       string  $image 源图片
         * @return      bool    
         */
        public function loadFile($image){
                if(!$dims = @getimagesize($image)){
                        trigger_error("源图片不存在");
                }
                if(in_array($dims['mime'], $this->types)){
                        $loader = $this->imgLoaders[$dims['mime']];
                        $this->source = $loader($image);
                        $this->sourceWidth = $dims[0];
                        $this->sourceHeight = $dims[1];
                        $this->sourceMime = $dims['mime'];
                        $this->initThumb();
                        return TRUE;
                }else{
                        trigger_error('不支持'.$dims['mime']."图片类型");
                }
        }
        /**
         * 字符串方式加载图片
         * @param       string $image  字符串
         * @param       string $mime    图片类型
         * @return type 
         */
        public function loadData($image,$mime){
                if(in_array($mime, $this->types)){
                        if($this->source = @imagecreatefromstring($image)){
                                $this->sourceWidth = imagesx($this->source);
                                $this->sourceHeight = imagesy($this->source);
                                $this->sourceMime = $mime;
                                $this->initThumb();
                                return TRUE;
                        }else{
                                trigger_error("不能从字符串加载图片");
                        }
                }else{
                        trigger_error("不支持".$mime."图片格式");
                }
        }
        /**
         * 生成缩略图
         * @param       string  $file   文件名。如果不为空则储存为文件,否则直接
输出到浏览器 */ public function buildThumb($file = null){ $creator = $this->imgCreators[$this->sourceMime]; if(isset($file)){ return $creator($this->thumb,$file); }else{ return $creator($this->thumb); } } /** * 处理缩放 */ public function initThumb(){ if($this->scale){ if($this->sourceWidth > $this->sourceHeight){ $this->thumbWidth = $this->maxWidth; $this->thumbHeight = floor($this->sourceHeight*($this->maxWidth/$this->sourceWidth)); }elseif($this->sourceWidth < $this->sourceHeight){ $this->thumbHeight = $this->maxHeight; $this->thumbWidth = floor($this->sourceWidth*($this->maxHeight/$this->sourceHeight)); }else{ $this->thumbWidth = $this->maxWidth; $this->thumbHeight = $this->maxHeight; } } $this->thumb = imagecreatetruecolor($this->thumbWidth, $this->thumbHeight); if($this->sourceWidth <= $this->maxWidth && $this->sourceHeight <= $this->maxHeight && $this->inflate == FALSE){ $this->thumb = $this->source; }else{ imagecopyresampled($this->thumb, $this->source, 0, 0, 0, 0, $this->thumbWidth, $this->thumbHeight, $this->sourceWidth, $this->sourceHeight); } } public function getMine(){ return $this->sourceMime; } public function getThumbWidth(){ return $this->thumbWidth; } public function getThumbHeight(){ return $this->thumbHeight; } } /** * 缩略图类调用示例(文件) */ $thumb = new Thumbnail(200, 200); $thumb->loadFile('wap.gif'); header('Content-Type:'.$thumb->getMine()); $thumb->buildThumb(); /** * 缩略图类调用示例(字符串) */ $thumb = new Thumbnail(200, 200); $image = file_get_contents('wap.gif'); $thumb->loadData($image, 'image/jpeg'); $thumb->buildThumb('wap_thumb.gif'); ?>

人气教程排行