DedeCMS织梦

织梦DedeCMS生成多个不同尺寸缩略图

阿里云

织梦 DedeCMS 缩略图生成方式都是采用缩小或拉伸的方式进行完整显示,如果使用的图片和缩略图所显示的比例不一致的话,会使得缩略图拉伸变形。解决的思路是对图片进行按宽或高进行放缩,超过缩略图大小的部分再进行裁剪,这样生成的缩略图的显示效果要比原来的要好得多了。不过因为是剪裁的,会造成有些图片重要的部分也被剪掉了,如果是图片站,有些图片一剪裁,手或者脚就“断”了,所以这个方法仅供大家参考一下。如何解决织梦 DedeCMS5.7 缩略图变形的问题呢?还是修改织梦获取缩略图的函数。

方法一:

DedeCMS5.7 的函数是在/include/helpers/文件夹中的 image.helper.php 里面。修改之前,一定要先对对应的文件进行备份,防止造成无法预料的程序错误。先找到如下的代码:

也想出现在这里?联系我们
创客主机
  1. $srcW=ImageSX($im); 
  2. $srcH=ImageSY($im); 
  3. if($srcW<=$toW && $srcH<=$toH ) return TRUE; 
  4. $toWH=$toW/$toH; 
  5. $srcWH=$srcW/$srcH; 
  6. if( 
  7. $toWH<=$srcWH) 
  8. { 
  9. $ftoW=$toW; 
  10. $ftoH=$ftoW*($srcH/$srcW); 
  11. } 
  12. else
  13. { 
  14. $ftoH=$toH; 
  15. $ftoW=$ftoH*($srcW/$srcH)

把这部分代码修改为如下的代码:

  1. $srcW=ImageSX($im);
  2. $srcH=ImageSY($im);
  3. if(
  4. $srcW<=$toW && $srcH<=$toH ) return TRUE;
  5. $toWH=$toW/$toH;
  6. $srcWH=$srcW/$srcH;
  7. $ftoH=$toH;
  8. $ftoW=$toW;
  9. if
  10. ($toWH<=$srcWH)
  11. {
  12. $src_Y = 0;
  13. $src_X = ($srcW-$srcH*$toWH)/2;
  14. $srcW = $srcH*$toWH;
  15. }
  16. else
  17. {
  18. $src_X = 0;
  19. $src_Y = ($srcH-$srcW/$toWH)/2;
  20. $srcH = $srcW/$toWH;
  21. }

方法二:

适用于全站需要多种尺寸的缩略图,该种方法可以和上述结合使用,效果更好。

1、增加函数:打开 include/extend.func.php,末尾增加

  1. function thumb($imgurl, $width, $height, $bg = true) 
  2. { 
  3. global $cfg_mainsite,$cfg_multi_site; 
  4. $thumb = eregi("http://",$imgurl)?str_replace($cfg_mainsite,'',$imgurl):$imgurl; 
  5. list($thumbname,$extname) = explode('.',$thumb); 
  6. $newthumb = $thumbname.'_'.$width.'_'.$height.'.'.$extname; 
  7. if(!$thumbname || !$extname || !file_exists(DEDEROOT.$thumb)) return $imgurl; 
  8. if(!file_exists(DEDEROOT.$newthumb)) 
  9. { 
  10. include_once DEDEINC.'/image.func.php'; 
  11. if($bg==true) 
  12. { 
  13. ImageResizeNew(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb); 
  14. } 
  15. else 
  16. { 
  17. ImageResize(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb); 
  18. } 
  19. } 
  20. return $cfg_multi_site=='Y'?$cfg_mainsite.$newthumb:$newthumb; 
  21. }

2、后台设置:

说明:总的来说生成后的缩略图是由原图整体缩小后得到(这个部分是生成的原始缩略图),然后从上到下按照宽度裁切(这个部分是在原始缩略图的基础上再次裁切),如果你网站中不需要调用原始缩略图,同时需要三种规格的缩略图,那么你的缩略图总共会有 4 张,1 张原始缩略图,3 张你需要的尺寸。

设置:后台的附件管理中,缩略图生成的尺寸按照你网站中调取的规格,选择最宽的数值,最高的数值。我的做法: 我网站需要四套尺寸,列表页面的主体区域是重点,需要 191*258,还有 230*172; 其它的是边栏和底部,173*129,和 204*153,非常的不规则;由于是以宽度为准,同时我需要前 2 套都比较正常,要是后台附件设置为 230*258 ,那么 191*258 这个将会有补白,不是理想的选择, 所以我按照 191*258 这个尺寸的等比尺寸 230*311 来作为全局的设置。 这样首选保证了我重点的 2 套,同时其它 2 套也不会变形,只是会被裁剪。

3、页面调用:

标签 : [field:picname function=’thumb(@me,$width,$height,$bg)’/]

参数说明: $width:缩略图宽度(整数) $height:缩略图高度(整数) $bg:是否用空白填补,默认自动填补,背景填充颜色在系统-附件设置里(true/false)

举例:调用长宽为 100 像素的缩略图:[field:picname function=’thumb(@me,100,100)’/]

保留原有比例,不自动填充(不建议):[field:picname function=’thumb(@me,100,100,false)’/]

织梦 DedeCMS 生成多个不同尺寸缩略图

已有 437 人购买
查看演示升级 VIP立刻购买

收藏
(2)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!