解决无论图片大小都会生成缩略图的问题修改

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决无论图片大小都会生成缩略图的问题修改
function Thumb($source, $target, $thumbwidth, $thumbheight, $thumbtype = 1, $nosuffix = 0) {
$return = $this->init('thumb', $source, $target, $nosuffix);
if($return <= 0) {
return $this->returncode($return);
}
if($this->imginfo['animated']) {
return $this->returncode(0);
}
$this->param['thumbwidth'] = intval($thumbwidth);
if(!$thumbheight || $thumbheight > $this->imginfo['height']) {
$thumbheight = $thumbwidth > $this->imginfo['width'] ? $this->imginfo['height'] : $this->imginfo['height']*($thumbwidth/$this->imginfo['width']);
}
//在这里重新定义的$thumbheight 的值,只要缩略图的高度大于图片的高度,就对他进行了重新定义。

那么我们看看他是怎么重新定义的。

条件:缩略图的高度大于图片的高度
定义条件:
1.如果缩略图的宽度大于图片的宽度,缩略图的高度就等于图片的高度。

(导致结果:本来缩略图的宽度大于图片的宽度,就有可能不需要生成缩略图,但这里人为的使缩略图的高度=图片的高度,因此满足
生成缩略图的条件。


2.如果缩略图的宽度小于图片的宽度,缩略图的高度=图片的高度*缩略图的宽度/图片的宽度(因为缩略图的宽度小于图片的宽度为前提,固此值小于1)
因此缩略图的高度会小于图片的高度
(导致结果:缩略图的宽度小于图片的宽度,就应该生成缩略图,无论高度如何。


所以会产生,无论图片大小,都会生成缩略图。

$this->param['thumbheight'] = intval($thumbheight);
$this->param['thumbtype'] = $thumbtype;
if($thumbwidth < 100 && $thumbheight < 100) {
$this->param['thumbquality'] = 100;
}
$return = !$this->libmethod ? $this->Thumb_GD() : $this->Thumb_IM();
$return = !$nosuffix ? $return : 0;
return $this->sleep($return);
}
执行函数
function Thumb_GD() {
if(!function_exists('imagecreatetruecolor')
|| !function_exists('imagecopyresampled') || !function_exists('imagejpeg') || !function_exists('imagecopymerge')) {
return -4;
}
$imagefunc = &$this->imagefunc;
$attach_photo = $this->loadsource();
if($attach_photo < 0) {
return $attach_photo;
}
$copy_photo = imagecreatetruecolor($this->imginfo['width'],
$this->imginfo['height']);
imagecopy($copy_photo, $attach_photo ,0, 0, 0, 0, $this->imginfo['width'], $this->imginfo['height']);
$attach_photo = $copy_photo;
$thumb_photo = null;
switch($this->param['thumbtype']) {
case 'fixnone':
case 1:
if($this->imginfo['width'] >= $this->param['thumbwidth'] || $this->imginfo['height'] >= $this->param['thumbheight']) { $thumb = array();
list(,,$thumb['width'], $thumb['height']) = $this->sizevalue(0);
$cx = $this->imginfo['width'];
$cy = $this->imginfo['height'];
$thumb_photo = imagecreatetruecolor($thumb['width'], $thumb['height']);
imagecopyresampled($thumb_photo, $attach_photo ,0, 0, 0, 0, $thumb['width'], $thumb['height'], $cx, $cy);
}。

相关文档
最新文档