想缩略图不拉伸变形显示,就得制作一个和显示缩略图位置大小一致或者图片比例一致且大于缩略图的分辨率就 会不拉伸变形了,当然也可以采取之际制作好分辨率一致的缩略图进行显示。
示例:
1.修改DEDECMS v5.6缩略图生成方法:
默认dedecms5.6默认生成的缩略图,缩略图大小设置为:100*100(直接把图片缩小了)看起来很不美观,影响了图片的观赏性

2.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;}

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。