解决dedecms(5.6/5.7)缩略图缩放变形问题方法

解决dedecms(5.6/5.7)缩略图缩放变形问题方法,我们知道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/

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

如果你使用的是dedecms5.6,打开目录/include/找到image.func.php文件。

dedecms5.6版image.func.php修改方法(直接替换原来方法)

//[2020-11-04]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高)

001

functionImageResize($srcFile,$toW,$toH,$toFile=""){

002

global$cfg_photo_type;

003

if($toFile==""){

004

$toFile=$srcFile;

005

}

006

$info="";

007

$srcInfo=GetImageSize($srcFile,$info);

008

switch($srcInfo[2]){

009

case1:

010

if(!$cfg_photo_type['gif']){

011

returnfalse;

012

}

013

$im=imagecreatefromgif($srcFile);

014

break;

015

case2:

016

if(!$cfg_photo_type['jpeg']){

017

returnfalse;

018

}

019

$im=imagecreatefromjpeg($srcFile);

020

break;

021

case3:

022

if(!$cfg_photo_type['png']){

023

returnfalse;

024

}

025

$im=imagecreatefrompng($srcFile);

026

break;

027

case6:

028

if(!$cfg_photo_type['bmp']){

029

returnfalse;

030

}

031

$im=imagecreatefromwbmp($srcFile);

032

break;

033

}

034

$srcW=ImageSX($im);

035

$srcH=ImageSY($im);

036

if($srcW<=$toW&&$srcH<=$toH){

037

returntrue;

038

}

039

//缩略生成并裁剪

040

$newW=$toH*$srcW/$srcH;

041

$newH=$toW*$srcH/$srcW;

042

if($newH>=$toH){

043

$ftoW=$toW;

044

$ftoH=$newH;

045

}else{

046

$ftoW=$newW;

047

$ftoH=$toH;

048

}

049

if($srcW>$toW||$srcH>$toH){

050

if(function_exists("imagecreatetruecolor")){

051

@$ni=imagecreatetruecolor($ftoW,$ftoH);

052

if($ni){

053

imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

054

}else{

055

$ni=imagecreate($ftoW,$ftoH);

056

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

057

}

058

}else{

059

$ni=imagecreate($ftoW,$ftoH);

060

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

061

}

062

//裁剪图片成标准缩略图

063

$new_imgx=imagecreatetruecolor($toW,$toH);

064

if($newH>=$toH){

065

imagecopyresampled($new_imgx,$ni,0,0,0,($newH–$toH)/2,$toW,$toH,$toW,$toH);

066

}else{

067

imagecopyresampled($new_imgx,$ni,0,0,($newW–$toW)/2,0,$toW,$toH,$toW,$toH);

068

}

069

switch($srcInfo[2]){

070

case1:

071

imagegif($new_imgx,$toFile);

072

break;

073

case2:

074

imagejpeg($new_imgx,$toFile,85);

075

break;

076

case3:

077

imagepng($new_imgx,$toFile);

078

break;

079

case6:

080

imagebmp($new_imgx,$toFile);

081

break;

082

default:

083

returnfalse;

084

}

085

imagedestroy($new_imgx);

086

imagedestroy($ni);

087

}

088

imagedestroy($im);

089

returntrue;

090

}

091

//[2020-11-04]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高)

092

functionImageResize($srcFile,$toW,$toH,$toFile=""){

093

global$cfg_photo_type;

094

if($toFile==""){

095

$toFile=$srcFile;

096

}

097

$info="";

098

$srcInfo=GetImageSize($srcFile,$info);

099

switch($srcInfo[2]){

100

case1:

101

if(!$cfg_photo_type['gif']){

102

returnfalse;

103

}

104

$im=imagecreatefromgif($srcFile);

105

break;

106

case2:

107

if(!$cfg_photo_type['jpeg']){

108

returnfalse;

109

}

110

$im=imagecreatefromjpeg($srcFile);

111

break;

112

case3:

113

if(!$cfg_photo_type['png']){

114

returnfalse;

115

}

116

$im=imagecreatefrompng($srcFile);

117

break;

118

case6:

119

if(!$cfg_photo_type['bmp']){

120

returnfalse;

121

}

122

$im=imagecreatefromwbmp($srcFile);

123

break;

124

}

125

$srcW=ImageSX($im);

126

$srcH=ImageSY($im);

127

if($srcW<=$toW&&$srcH<=$toH){

128

returntrue;

129

}

130

//缩略生成并裁剪

131

$newW=$toH*$srcW/$srcH;

132

$newH=$toW*$srcH/$srcW;

133

if($newH>=$toH){

134

$ftoW=$toW;

135

$ftoH=$newH;

136

}else{

137

$ftoW=$newW;

138

$ftoH=$toH;

139

}

140

if($srcW>$toW||$srcH>$toH){

141

if(function_exists("imagecreatetruecolor")){

142

@$ni=imagecreatetruecolor($ftoW,$ftoH);

143

if($ni){

144

imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

145

}else{

146

$ni=imagecreate($ftoW,$ftoH);

147

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

148

}

149

}else{

150

$ni=imagecreate($ftoW,$ftoH);

151

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

152

}

153

//裁剪图片成标准缩略图

154

$new_imgx=imagecreatetruecolor($toW,$toH);

155

if($newH>=$toH){

156

imagecopyresampled($new_imgx,$ni,0,0,0,($newH–$toH)/2,$toW,$toH,$toW,$toH);

157

}else{

158

imagecopyresampled($new_imgx,$ni,0,0,($newW–$toW)/2,0,$toW,$toH,$toW,$toH);

159

}

160

switch($srcInfo[2]){

161

case1:

162

imagegif($new_imgx,$toFile);

163

break;

164

case2:

165

imagejpeg($new_imgx,$toFile,85);

166

break;

167

case3:

168

imagepng($new_imgx,$toFile);

169

break;

170

case6:

171

imagebmp($new_imgx,$toFile);

172

break;

173

default:

174

returnfalse;

175

}

176

imagedestroy($new_imgx);

177

imagedestroy($ni);

178

}

179

imagedestroy($im);

180

returntrue;

181

}

182

183

dedecms5.7版image.helper.php修改方法:

184

185

if(!function_exists('ImageResize')){

186

functionImageResize($srcFile,$toW,$toH,$toFile=""){

187

global$cfg_photo_type;

188

if($toFile==""){

189

$toFile=$srcFile;

190

}

191

$info="";

192

$srcInfo=GetImageSize($srcFile,$info);

193

switch($srcInfo[2]){

194

case1:

195

if(!$cfg_photo_type['gif']){

196

returnfalse;

197

}

198

$im=imagecreatefromgif($srcFile);

199

break;

200

case2:

201

if(!$cfg_photo_type['jpeg']){

202

returnfalse;

203

}

204

$im=imagecreatefromjpeg($srcFile);

205

break;

206

case3:

207

if(!$cfg_photo_type['png']){

208

returnfalse;

209

}

210

$im=imagecreatefrompng($srcFile);

211

break;

212

case6:

213

if(!$cfg_photo_type['bmp']){

214

returnfalse;

215

}

216

$im=imagecreatefromwbmp($srcFile);

217

break;

218

}

219

$srcW=ImageSX($im);

220

$srcH=ImageSY($im);

221

if($srcW<=$toW&&$srcH<=$toH){

222

returntrue;

223

}

224

//缩略生成并裁剪

225

$newW=$toH*$srcW/$srcH;

226

$newH=$toW*$srcH/$srcW;

227

if($newH>=$toH){

228

$ftoW=$toW;

229

$ftoH=$newH;

230

}else{

231

$ftoW=$newW;

232

$ftoH=$toH;

233

}

234

if($srcW>$toW||$srcH>$toH){

235

if(function_exists("imagecreatetruecolor")){

236

@$ni=imagecreatetruecolor($ftoW,$ftoH);

237

if($ni){

238

imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

239

}else{

240

$ni=imagecreate($ftoW,$ftoH);

241

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

242

}

243

}else{

244

$ni=imagecreate($ftoW,$ftoH);

245

imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);

246

}

247

//裁剪图片成标准缩略图

248

$new_imgx=imagecreatetruecolor($toW,$toH);

249

if($newH>=$toH){

250

imagecopyresampled($new_imgx,$ni,0,0,0,($newH–$toH)/2,$toW,$toH,$toW,$toH);

251

}else{

252

imagecopyresampled($new_imgx,$ni,0,0,($newW–$toW)/2,0,$toW,$toH,$toW,$toH);

253

}

254

switch($srcInfo[2]){

255

case1:

256

imagegif($new_imgx,$toFile);

257

break;

258

case2:

259

imagejpeg($new_imgx,$toFile,85);

260

break;

261

case3:

262

imagepng($new_imgx,$toFile);

263

break;

264

case6:

265

imagebmp($new_imgx,$toFile);

266

break;

267

default:

268

returnfalse;

269

}

270

imagedestroy($new_imgx);

271

imagedestroy($ni);

272

}

273

imagedestroy($im);

274

returntrue;

275

}

276

}

上一篇:react购物车


下一篇:融云im撤回消息