dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题

资源来源网络,如需授权,请更换源码,模块仅供学习,如需商用请购买正版授权,本栏目不提供技术服务,积分不够请签到!如何签到?系统升级暂停签到,恢复关注公告!
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告

dedecms生成缩略图的原理不够灵活导致缩略图变形,比如后台设置缩略图的尺码为:120*90即为3:2的图片,但是假如内容里的大图尺码为300*300即1:1,这样生成出来的图片就会变形,严重影响网站美观,本文介绍通过修改dedecms生成缩略源码方法解决定问题

打开“include/image.func.php”文件,该文件在dedecms5.6,5.7中所在的目录不一样,5.6中文件在/include/下,5.7中文件在/include/helpers/,如果你懒的找可以直接在网站根目录搜索image.func.php文件

如果你使用的是dedecms5.7,打开目录/include/helpers/找到image.helper.php文件

如果你使用的是dedecms5.6,打开目录/include/找到image.func.php文件
5.7版image.helper.php修改方法

替换

/**

* 缩图片自动生成函数,来源支持bmp、gif、jpg、png

* 但生成的小图只用jpg或png格式

*

* @access public

* @param string $srcFile 图片路径

* @param string $toW 转换到的宽度

* @param string $toH 转换到的高度

* @param string $toFile 输出文件到

* @return string

*/

/**

* 获得GD的版本

*

* @access public

* @return int

*/

中间的代码为:

dedecms生成缩略图的原理不够灵活导致缩略图变形,比如后台设置缩略图的尺码为:120*90即为3:2的图片,但是假如内容里的大图尺码为300*300即1:1,这样生成出来的图片就会变形,严重影响网站美观,本文介绍通过修改dedecms生成缩略源码方法解决定问题

打开“include/image.func.php”文件,该文件在dedecms5.6,5.7中所在的目录不一样,5.6中文件在/include/下,5.7中文件在/include/helpers/,如果你懒的找可以直接在网站根目录搜索image.func.php文件

如果你使用的是dedecms5.7,打开目录/include/helpers/找到image.helper.php文件

如果你使用的是dedecms5.6,打开目录/include/找到image.func.php文件
5.7版image.helper.php修改方法

替换

/**

* 缩图片自动生成函数,来源支持bmp、gif、jpg、png

* 但生成的小图只用jpg或png格式

*

* @access public

* @param string $srcFile 图片路径

* @param string $toW 转换到的宽度

* @param string $toH 转换到的高度

* @param string $toFile 输出文件到

* @return string

*/

/**

* 获得GD的版本

*

* @access public

* @return int

*/

中间的代码为:

001
001
002
if ( ! function_exists(‘ImageResize’))
003
002
004
{
005
003
006
function ImageResize($srcFile,$toW,$toH,$toFile=””)
007
004
008
{
009
005
010
global $cfg_photo_type;
011
006
012
if($toFile==””)
013
007
014
{
015
008
016
$toFile = $srcFile;
017
009
018
}
019
010
020
$info = “”;
021
011
022
$srcInfo = GetImageSize($srcFile,$info);
023
012
024
switch ($srcInfo[2])
025
013
026
{
027
014
028
case 1:
029
015
030
if(!$cfg_photo_type[‘gif’])
031
016
032
{
033
017
034
return false;
035
018
036
}
037
019
038
$im = imagecreatefromgif($srcFile);
039
020
040
break;
041
021
042
case 2:
043
022
044
if(!$cfg_photo_type[‘jpeg’])
045
023
046
{
047
024
048
return false;
049
025
050
}
051
026
052
$im = imagecreatefromjpeg($srcFile);
053
027
054
break;
055
028
056
case 3:
057
029
058
if(!$cfg_photo_type[‘png’])
059
030
060
{
061
031
062
return false;
063
032
064
}
065
033
066
$im = imagecreatefrompng($srcFile);
067
034
068
break;
069
035
070
case 6:
071
036
072
if(!$cfg_photo_type[‘bmp’])
073
037
074
{
075
038
076
return false;
077
039
078
}
079
040
080
$im = imagecreatefromwbmp($srcFile);
081
041
082
break;
083
042
084
}
085
043
086
$srcW=ImageSX($im);
087
044
088
$srcH=ImageSY($im);
089
045
090
if($srcW<=$toW && $srcH<=$toH )
091
046
092
{
093
047
094
return true;
095
048
096
}
097
049
098
//缩略生成并裁剪
099
050
100
$newW = $toH * $srcW / $srcH;
101
051
102
$newH = $toW * $srcH / $srcW;
103
052
104
if($newH >= $toH)
105
053
106
{
107
054
108
$ftoW = $toW;
109
055
110
$ftoH = $newH;
111
056
112
}
113
057
114
else
115
058
116
{
117
059
118
$ftoW = $newW;
119
060
120
$ftoH = $toH;
121
061
122
}
123
062
124
if($srcW>$toW||$srcH>$toH)
125
063
126
{
127
064
128
if(function_exists(“imagecreatetruecolor”))
129
065
130
{
131
066
132
@$ni = imagecreatetruecolor($ftoW,$ftoH);
133
067
134
if($ni)
135
068
136
{
137
069
138
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
139
070
140
}
141
071
142
else
143
072
144
{
145
073
146
$ni=imagecreate($ftoW,$ftoH);
147
074
148
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
149
075
150
}
151
076
152
}
153
077
154
else
155
078
156
{
157
079
158
$ni=imagecreate($ftoW,$ftoH);
159
080
160
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
161
081
162
}
163
082
164
//裁剪图片成标准缩略图
165
083
166
$new_imgx = imagecreatetruecolor($toW,$toH);
167
084
168
if($newH >= $toH)
169
085
170
{
171
086
172
imagecopyresampled($new_imgx,$ni,0,0,0,($newH – $toH)/2,$toW,$toH,$toW,$toH);
173
087
174
}
175
088
176
else
177
089
178
{
179
090
180
imagecopyresampled($new_imgx,$ni,0,0,($newW – $toW)/2,0,$toW,$toH,$toW,$toH);
181
091
182
}
183
092
184
switch ($srcInfo[2])
185
093
186
{
187
094
188
case 1:
189
095
190
imagegif($new_imgx,$toFile);
191
096
192
break;
193
097
194
case 2:
195
098
196
imagejpeg($new_imgx,$toFile,85);
197
099
198
break;
199
100
200
case 3:
201
101
202
imagepng($new_imgx,$toFile);
203
102
204
break;
205
103
206
case 6:
207
104
208
imagebmp($new_imgx,$toFile);
209
105
210
break;
211
106
212
default:
213
107
214
return false;
215
108
216
}
217
109
218
imagedestroy($new_imgx);
219
110
220
imagedestroy($ni);
221
111
222
}
223
112
224
imagedestroy($im);
225
113
226
return true;
227
114
228
}
229
115
230
}

修改好后保存文件即可,赶紧添加个带图片的文章试试吧,如果你不愿意修改可直接
5.6版image.func.php修改方法

替换

//缩图片自动生成函数,来源支持bmp、gif、jpg、png

//获得GD的版本

中间的代码为:

001
001
002
function ImageResize($srcFile,$toW,$toH,$toFile=””)
003
002
004
{
005
003
006
global $cfg_photo_type;
007
004
008
if($toFile==””)
009
005
010
{
011
006
012
$toFile = $srcFile;
013
007
014
}
015
008
016
$info = “”;
017
009
018
$srcInfo = GetImageSize($srcFile,$info);
019
010
020
switch ($srcInfo[2])
021
011
022
{
023
012
024
case 1:
025
013
026
if(!$cfg_photo_type[‘gif’])
027
014
028
{
029
015
030
return false;
031
016
032
}
033
017
034
$im = imagecreatefromgif($srcFile);
035
018
036
break;
037
019
038
case 2:
039
020
040
if(!$cfg_photo_type[‘jpeg’])
041
021
042
{
043
022
044
return false;
045
023
046
}
047
024
048
$im = imagecreatefromjpeg($srcFile);
049
025
050
break;
051
026
052
case 3:
053
027
054
if(!$cfg_photo_type[‘png’])
055
028
056
{
057
029
058
return false;
059
030
060
}
061
031
062
$im = imagecreatefrompng($srcFile);
063
032
064
break;
065
033
066
case 6:
067
034
068
if(!$cfg_photo_type[‘bmp’])
069
035
070
{
071
036
072
return false;
073
037
074
}
075
038
076
$im = imagecreatefromwbmp($srcFile);
077
039
078
break;
079
040
080
}
081
041
082
$srcW=ImageSX($im);
083
042
084
$srcH=ImageSY($im);
085
043
086
if($srcW<=$toW && $srcH<=$toH )
087
044
088
{
089
045
090
return true;
091
046
092
}
093
047
094
//缩略生成并裁剪
095
048
096
$newW = $toH * $srcW / $srcH;
097
049
098
$newH = $toW * $srcH / $srcW;
099
050
100
if($newH >= $toH)
101
051
102
{
103
052
104
$ftoW = $toW;
105
053
106
$ftoH = $newH;
107
054
108
}
109
055
110
else
111
056
112
{
113
057
114
$ftoW = $newW;
115
058
116
$ftoH = $toH;
117
059
118
}
119
060
120
if($srcW>$toW||$srcH>$toH)
121
061
122
{
123
062
124
if(function_exists(“imagecreatetruecolor”))
125
063
126
{
127
064
128
@$ni = imagecreatetruecolor($ftoW,$ftoH);
129
065
130
if($ni)
131
066
132
{
133
067
134
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
135
068
136
}
137
069
138
else
139
070
140
{
141
071
142
$ni=imagecreate($ftoW,$ftoH);
143
072
144
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
145
073
146
}
147
074
148
}
149
075
150
else
151
076
152
{
153
077
154
$ni=imagecreate($ftoW,$ftoH);
155
078
156
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
157
079
158
}
159
080
160
//裁剪图片成标准缩略图
161
081
162
$new_imgx = imagecreatetruecolor($toW,$toH);
163
082
164
if($newH >= $toH)
165
083
166
{
167
084
168
imagecopyresampled($new_imgx,$ni,0,0,0,($newH – $toH)/2,$toW,$toH,$toW,$toH);
169
085
170
}
171
086
172
else
173
087
174
{
175
088
176
imagecopyresampled($new_imgx,$ni,0,0,($newW – $toW)/2,0,$toW,$toH,$toW,$toH);
177
089
178
}
179
090
180
switch ($srcInfo[2])
181
091
182
{
183
092
184
case 1:
185
093
186
imagegif($new_imgx,$toFile);
187
094
188
break;
189
095
190
case 2:
191
096
192
imagejpeg($new_imgx,$toFile,85);
193
097
194
break;
195
098
196
case 3:
197
099
198
imagepng($new_imgx,$toFile);
199
100
200
break;
201
101
202
case 6:
203
102
204
imagebmp($new_imgx,$toFile);
205
103
206
break;
207
104
208
default:
209
105
210
return false;
211
106
212
}
213
107
214
imagedestroy($new_imgx);
215
108
216
imagedestroy($ni);
217
109
218
}
219
110
220
imagedestroy($im);
221
111
222
return true;
223
112
224
}

可以直接

因dedecms版本的不同代码有所不一样,仅供参考。

©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
风格酷模板网 » dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题
NOTICE:【咨询风格酷】客服QQ:1131734965
NOTICE:【咨询风格酷】客服微信:wwwxmamnet
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。

发表评论

风格酷模板网www.xmam.net分享优质网站模板

立即查看 了解详情