| 
 | 
 
 
这样的话,如果图片的宽高比例不合适,那么缩略图将会被压缩得很不好看,在这里,我是先对图片进行按宽或高进行放缩,超过缩略图大小的部分再进行裁剪,这样生成的缩略图的显示效果要比原来的要好得多了。  
于是重新修改了一下DEDECMS v5.6缩略图生成方法。  
默认dedecms5.6默认生成的缩略图,缩略图大小设置为:100*100(直接把图片缩小了)  
看起来很不美观,影响了图片的观赏性  
DEDECMS v5.6缩略图裁剪优化方法  
修改如下:  
打开/includes/image.func.php文件,  
//缩图片自动生成函数,来源支持bmp、gif、jpg、png  
//但生成的小图只用jpg或png格式  
找到代码第44行function ImageResize  
至  
//获得GD的版本之间的代码  
,用如下的代码覆盖(大家请注意备份)。  
复制代码代码如下:  
function ImageResize($srcFile,$toW,$toH,$toFile="")  
{  
global $cfg_photo_type;  
if($toFile=="")  
{  
$toFile = $srcFile;  
}  
$info = "";  
$srcInfo = GetImageSize($srcFile,$info);  
switch ($srcInfo[2])  
{  
case 1:  
if(!$cfg_photo_type['gif'])  
{  
return false;  
}  
$im = imagecreatefromgif($srcFile);  
break;  
case 2:  
if(!$cfg_photo_type['jpeg'])  
{  
return false;  
}  
$im = imagecreatefromjpeg($srcFile);  
break;  
case 3:  
if(!$cfg_photo_type['png'])  
{  
return false;  
}  
$im = imagecreatefrompng($srcFile);  
break;  
case 6:  
if(!$cfg_photo_type['bmp'])  
{  
return false;  
}  
$im = imagecreatefromwbmp($srcFile);  
break;  
}  
$srcW=ImageSX($im);  
$srcH=ImageSY($im);  
if($srcW= $toH)  
{  
$ftoW = $toW;  
$ftoH = $newH;  
}  
else  
{  
$ftoW = $newW;  
$ftoH = $toH;  
}  
if($srcW>$toW||$srcH>$toH)  
{  
if(function_exists("imagecreatetruecolor"))  
{  
@$ni = imagecreatetruecolor($ftoW,$ftoH);  
if($ni)  
{  
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
}  
else  
{  
$ni=imagecreate($ftoW,$ftoH);  
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
}  
}  
else  
{  
$ni=imagecreate($ftoW,$ftoH);  
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
}  
//裁剪图片成标准缩略图  
$new_($toW,$toH);  
if($newH >= $toH)  
{  
imagecopyresampled($new_,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);  
}  
else  
{  
imagecopyresampled($new_,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);  
}  
switch ($srcInfo[2])  
{  
case 1:  
imagegif($new_,$toFile);  
break;  
case 2:  
imagejpeg($new_,$toFile,85);  
break;  
case 3:  
imagepng($new_,$toFile);  
break;  
case 6:  
imagebmp($new_,$toFile);  
break;  
default:  
return false;  
}  
imagedestroy($new_);  
imagedestroy($ni);  
}  
imagedestroy($im);  
return true;  
}  
 |   
 
 
 
 |