加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > Dedecms > 正文

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

发布时间:2020-12-14 04:07:25 所属栏目:Dedecms 来源:网络整理
导读:由站长 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。 织梦 dedecms 缩略图生成方式都是采用缩小或拉伸的方式进行完整显示,如果使用的图片和缩略图所显示的比例不一致的话,会使得缩略图拉伸变形。解决的思

以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考

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

方法一:

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

$srcW=ImageSX($im);

$srcH=ImageSY($im);

if($srcW<=$toW && $srcH<=$toH ) return TRUE;

$toWH=$toW/$toH;

$srcWH=$srcW/$srcH;

if(

$toWH<=$srcWH)

{

$ftoW=$toW;

$ftoH=$ftoW*($srcH/$srcW);

}

else

{

$ftoH=$toH;

$ftoW=$ftoH*($srcW/$srcH)

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

$srcW=ImageSX($im);

$srcH=ImageSY($im);

if(

$srcW<=$toW && $srcH<=$toH ) return TRUE;

$toWH=$toW/$toH;

$srcWH=$srcW/$srcH;

$ftoH=$toH;

$ftoW=$toW;

if

($toWH<=$srcWH)

{

$src_Y = 0;

$src_X = ($srcW-$srcH*$toWH)/2;

$srcW = $srcH*$toWH;

}

else

{

$src_X = 0;

$src_Y = ($srcH-$srcW/$toWH)/2;

$srcH = $srcW/$toWH;

}

方法二:

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

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

function thumb($imgurl,$width,$height,$bg = true)

{

global $cfg_mainsite,$cfg_multi_site;

$thumb = eregi("http://",$imgurl)?str_replace($cfg_mainsite,'',$imgurl):$imgurl;

list($thumbname,$extname) = explode('.',$thumb);

$newthumb = $thumbname.'_'.$width.'_'.$height.'.'.$extname;

if(!$thumbname || !$extname || !file_exists(DEDEROOT.$thumb)) return $imgurl;

if(!file_exists(DEDEROOT.$newthumb))

{

include_once DEDEINC.'/image.func.php';

if($bg==true)

{

ImageResizeNew(DEDEROOT.$thumb,DEDEROOT.$newthumb);

}

else

{

ImageResize(DEDEROOT.$thumb,DEDEROOT.$newthumb);

}

}

return $cfg_multi_site=='Y'?$cfg_mainsite.$newthumb:$newthumb;

}

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,$bg)’/]

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

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

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

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读