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

前端之家收集整理的这篇文章主要介绍了织梦DedeCMS生成多个不同尺寸缩略图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。

织梦 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)’/]

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

猜你在找的Dedecms相关文章