缩略图 图片越来越模糊的原因

浏览:2701 发布日期:2015/02/15
3.2.3 - 严重 - 未处理

大锅了,你看,我上传一张1000像素的图片,越来越模糊,我以为它是从1000为基础缩略。最后发现是从160像素那张图片开始缩略。

除非。。。。把顺序调过来,但是,我又希望从1000那张开始缩略,那就麻烦了,要每次实例化一个对象,再进行重复的操作。怪不得网上经常说TP的缩略图,越缩越模糊,原因就是没从 元图 开始进行处理~!




修复:
打开Gd.class.php
1、在21行处加入 一句 private $out;    /**
     * 图像资源对象
     * @var resource
     */
    private $img;
    private $out;
2、将96行附近的$this->img 替换成 $this->out 后在96行加上imagedestroy($this->out);        //保存图像
        if('jpeg' == $type || 'jpg' == $type){
            //JPEG图像设置隔行扫描
            imageinterlace($this->out, $interlace);
            imagejpeg($this->out, $imgname,$quality);
            imagedestroy($this->out);
        }elseif('gif' == $type && !empty($this->gif)){
            $this->gif->save($imgname);
        }else{
3、将175、181、182行 注释 【如下代码】            //裁剪
            imagecopyresampled($img, $this->img, 0, 0, $x, $y, $width, $height, $w, $h);
            // imagedestroy($this->img); //销毁原图

            //设置新图像
            $this->out = $img;
        } while(!empty($this->gif) && $this->gifNext());

        // $this->info['width']  = $width;
        // $this->info['height'] = $height;
    }
4、搞掂,测试 用图片的例子进行测试


原理:原图不销毁,处理后的缩略图不代替原图,不修改原图信息,save后自动销毁缩略图。原图待php执行完毕后由PHP进行自动垃圾回收。也可在最后的使用image对象进行销毁原图,也可以在image类里面写一个析构函数,然后再最后使用image对象处使用析构函数!总之,个人感觉销不销毁对我来说不重要,图片上传只用在后台,使用情况不多,如果用在前台最好提前销毁,除非你是土豪,只要你的内存足够大,也没问题!
评论(
后面还有条评论,点击查看>>