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对象处使用析构函数!总之,个人感觉销不销毁对我来说不重要,图片上传只用在后台,使用情况不多,如果用在前台最好提前销毁,除非你是土豪,只要你的内存足够大,也没问题!
