

这样的话,如果图片的宽高比例不合适,那么缩略图将会被压缩得很不好看,在这里,我是先对图片进行按宽或高进行放缩,
超过缩略图大小的部分再进行裁剪,这样生成的缩略图的显示效果要比原来的要好得多了。于是重新修改了一下织梦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<=$toW && $srcH<=$toH ){return true;}//缩略生成并裁剪$newW = $toH * $srcW / $srcH;$newH = $toW * $srcH / $srcW;if($newH >= $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_imgx = imagecreatetruecolor($toW,$toH);if($newH >= $toH){imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);}else{imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);}switch ($srcInfo[2]){case 1:imagegif($new_imgx,$toFile);break;case 2:imagejpeg($new_imgx,$toFile,85);break;case 3:imagepng($new_imgx,$toFile);break;case 6:imagebmp($new_imgx,$toFile);break;default:return false;}imagedestroy($new_imgx);imagedestroy($ni);}imagedestroy($im);return true;}