平码平肖最准免费资料网 织梦模板之家(Mubanzhijia.Com),专注织梦模板设计制作!

热门搜索:

当前位置:主页 > 网站教程 > 技术教程 >

解决织梦DedeCms缩略图不拉伸变形的方法

时间:2012-06-23 来源:互联网 作者:网络 阅读: 1615次

织梦目前几个最新版本的缩略图生成方式都是采用缩小或拉伸的方式进行完整显示,如果使用的图片和缩略图所显示的比例不一致的话,会使得缩略图拉伸变形。如果不改变织梦目前的缩略图显示方式的话,又想缩略图不拉伸变形显示,就得制作一个和显示缩略图位置大小一致或者图片比例一致且大于缩略图的分辨率就会不拉伸变形了。

我们可以通过下面方法修改实现,对图片进行按宽或高进行放缩,超过缩略图大小的部分再进行裁剪,这样生成的缩略图的显示效果要比原来的要好得多了。同时也可以采取之际制作好分辨率一致的缩略图进行显示。

于是重新修改了一下DedeCms v5.6缩略图生成方法。

默认dedecms5.6默认生成的缩略图,缩略图大小设置为:100*100(直接把图片缩小了)

看起来很不美观,影响了图片的观赏性

DedeCms v5.6缩略图裁剪优化方法

修改如下:

打开/includes/image.func.php文件,

//缩图片自动生成函数,来源支持bmp、gif、jpg、png
//但生成的小图只用jpg或png格式

找到代码第44行function ImageResize

//获得GD的版本之间的代码,用如下的代码覆盖(大家请注意备份)。

  1. function ImageResize($srcFile,$toW,$toH,$toFile="")  
  2. {  
  3. global $cfg_photo_type;  
  4. if($toFile=="")  
  5. {  
  6.    $toFile = $srcFile;  
  7. }  
  8. $info = "";  
  9. $srcInfo = GetImageSize($srcFile,$info);  
  10. switch ($srcInfo[2])  
  11. {  
  12.    case 1:  
  13.     if(!$cfg_photo_type['gif'])  
  14.     {  
  15.      return false;  
  16.     }  
  17.     $im = imagecreatefromgif($srcFile);  
  18.     break;  
  19.    case 2:  
  20.     if(!$cfg_photo_type['jpeg'])  
  21.     {  
  22.      return false;  
  23.     }  
  24.     $im = imagecreatefromjpeg($srcFile);  
  25.     break;  
  26.    case 3:  
  27.     if(!$cfg_photo_type['png'])  
  28.     {  
  29.      return false;  
  30.     }  
  31.     $im = imagecreatefrompng($srcFile);  
  32.     break;  
  33.    case 6:  
  34.     if(!$cfg_photo_type['bmp'])  
  35.     {  
  36.      return false;  
  37.     }  
  38.     $im = imagecreatefromwbmp($srcFile);  
  39.     break;  
  40. }  
  41. $srcW=ImageSX($im);  
  42. $srcH=ImageSY($im);  
  43. if($srcW<=$toW && $srcH<=$toH )  
  44. {  
  45.    return true;  
  46. }  
  47. //缩略生成并裁剪  
  48. $newW = $toH * $srcW / $srcH;  
  49.            $newH = $toW * $srcH / $srcW;  
  50. if($newH >= $toH)  
  51. {  
  52.    $ftoW = $toW;  
  53.    $ftoH = $newH;  
  54. }  
  55. else 
  56. {  
  57.                      $ftoW = $newW;  
  58.    $ftoH = $toH;  
  59. }  
  60.            if($srcW>$toW||$srcH>$toH)  
  61. {  
  62.    if(function_exists("imagecreatetruecolor"))  
  63.    {  
  64.     @$ni = imagecreatetruecolor($ftoW,$ftoH);  
  65.     if($ni)  
  66.     {  
  67.      imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
  68.     }  
  69.     else 
  70.     {  
  71.      $ni=imagecreate($ftoW,$ftoH);  
  72.      imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
  73.     }  
  74.    }  
  75.    else 
  76.    {  
  77.     $ni=imagecreate($ftoW,$ftoH);  
  78.     imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);  
  79.    }  
  80.    //裁剪图片成标准缩略图  
  81.    $new_imgx = imagecreatetruecolor($toW,$toH);  
  82.    if($newH >= $toH)  
  83.    {  
  84.     imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);  
  85.    }  
  86.    else 
  87.    {  
  88.     imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);  
  89.    }  
  90.    switch ($srcInfo[2])  
  91.    {  
  92.     case 1:  
  93.      imagegif($new_imgx,$toFile);  
  94.      break;  
  95.     case 2:  
  96.      imagejpeg($new_imgx,$toFile,85);  
  97.      break;  
  98.     case 3:  
  99.      imagepng($new_imgx,$toFile);  
  100.      break;  
  101.     case 6:  
  102.      imagebmp($new_imgx,$toFile);  
  103.      break;  
  104.     default:  
  105.      return false;  
  106.    }  
  107.    imagedestroy($new_imgx);  
  108.    imagedestroy($ni);  
  109. }  
  110. imagedestroy($im);  
  111. return true;  

 

本文版权归原作者所有,转载请注明原文来源出处,织梦模板之家感谢您的支持!

本文链接:https://www.mubanzhijia.com/jishujiaocheng/161.html解决织梦DedeCms缩略图不拉伸变形的方法https://www.mubanzhijia.com/jishujiaocheng/161.html

上一篇:织梦调用列表页、文章页评论数和收藏数代码
下一篇:织梦CMS模板自带的网站地图怎么优化?
相关内容:
发表评论:
特价模板
原创织梦蓝色简洁新闻资讯门户模板

原创织梦蓝色简洁新闻资讯门户模板

特惠价:

立即抢购

特价织梦模板本站将持续推出,特价模板不参与其他促销活动!
推荐内容
  • 织梦DedeCMS系统列表页自动统计当前栏目文档总数的方法

    织梦DedeCMS系统列表页自动统计当前栏目文档总数的方法

  • 如何让织梦列表文章有缩略图则显示缩略图,无则不显示的技巧

    如何让织梦列表文章有缩略图则显示缩略图,无则不显示的技巧

  • 【视频】织梦地图sitemap路径修改方法

    【视频】织梦地图sitemap路径修改方法

  • 织梦DeDeCms5.6图集中图片ALT自动提取标题的修改方法

    织梦DeDeCms5.6图集中图片ALT自动提取标题的修改方法

  • 织梦DeDeCms 5.7搜索打开缓慢的原因及解决方法

    织梦DeDeCms 5.7搜索打开缓慢的原因及解决方法

  • 织梦DedeCMS首页调用单页文档内容的实现方法

    织梦DedeCMS首页调用单页文档内容的实现方法