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

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

解决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]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高)
function ImageResize($srcFile, $toW, $toH, $toFile = “”) {
global $cfg_photo_type;
if ($toFile == “”) {
$toFile = $srcFile;
}
$info = “”;
$srcInfo = GetImageSize($srcFile, $info);
switch ($srcInfo[2]) {
case 1:
if (!$cfg_photo_type[‘gif’]) {
return false;
}
$im = imagecreatefromgif($srcFile);
break;
case 2:
if (!$cfg_photo_type[‘jpeg’]) {
return false;
}
$im = imagecreatefromjpeg($srcFile);
break;
case 3:
if (!$cfg_photo_type[‘png’]) {
return false;
}
$im = imagecreatefrompng($srcFile);
break;
case 6:
if (!$cfg_photo_type[‘bmp’]) {
return false;
}
$im = imagecreatefromwbmp($srcFile);
break;
}
$srcW = ImageSX($im);
$srcH = ImageSY($im);
if ($srcW <= $toW && $srcH <= $toH) {
return true;
}
//缩略生成并裁剪
$newW = $toH * $srcW / $srcH;
$newH = $toW * $srcH / $srcW;
if ($newH >= $toH) {
$ftoW = $toW;
$ftoH = $newH;
} else {
$ftoW = $newW;
$ftoH = $toH;
}
if ($srcW > $toW || $srcH > $toH) {
if (function_exists(“imagecreatetruecolor”)) {
@$ni = imagecreatetruecolor($ftoW, $ftoH);
if ($ni) {
imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
//裁剪图片成标准缩略图
$new_imgx = imagecreatetruecolor($toW, $toH);
if ($newH >= $toH) {
imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH – $toH) / 2, $toW, $toH, $toW, $toH);
} else {
imagecopyresampled($new_imgx, $ni, 0, 0, ($newW – $toW) / 2, 0, $toW, $toH, $toW, $toH);
}
switch ($srcInfo[2]) {
case 1:
imagegif($new_imgx, $toFile);
break;
case 2:
imagejpeg($new_imgx, $toFile, 85);
break;
case 3:
imagepng($new_imgx, $toFile);
break;
case 6:
imagebmp($new_imgx, $toFile);
break;
default:
return false;
}
imagedestroy($new_imgx);
imagedestroy($ni);
}
imagedestroy($im);
return true;
}
//[2020-11-04]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高)
function ImageResize($srcFile, $toW, $toH, $toFile = “”) {
global $cfg_photo_type;
if ($toFile == “”) {
$toFile = $srcFile;
}
$info = “”;
$srcInfo = GetImageSize($srcFile, $info);
switch ($srcInfo[2]) {
case 1:
if (!$cfg_photo_type[‘gif’]) {
return false;
}
$im = imagecreatefromgif($srcFile);
break;
case 2:
if (!$cfg_photo_type[‘jpeg’]) {
return false;
}
$im = imagecreatefromjpeg($srcFile);
break;
case 3:
if (!$cfg_photo_type[‘png’]) {
return false;
}
$im = imagecreatefrompng($srcFile);
break;
case 6:
if (!$cfg_photo_type[‘bmp’]) {
return false;
}
$im = imagecreatefromwbmp($srcFile);
break;
}
$srcW = ImageSX($im);
$srcH = ImageSY($im);
if ($srcW <= $toW && $srcH <= $toH) {
return true;
}
//缩略生成并裁剪
$newW = $toH * $srcW / $srcH;
$newH = $toW * $srcH / $srcW;
if ($newH >= $toH) {
$ftoW = $toW;
$ftoH = $newH;
} else {
$ftoW = $newW;
$ftoH = $toH;
}
if ($srcW > $toW || $srcH > $toH) {
if (function_exists(“imagecreatetruecolor”)) {
@$ni = imagecreatetruecolor($ftoW, $ftoH);
if ($ni) {
imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
//裁剪图片成标准缩略图
$new_imgx = imagecreatetruecolor($toW, $toH);
if ($newH >= $toH) {
imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH – $toH) / 2, $toW, $toH, $toW, $toH);
} else {
imagecopyresampled($new_imgx, $ni, 0, 0, ($newW – $toW) / 2, 0, $toW, $toH, $toW, $toH);
}
switch ($srcInfo[2]) {
case 1:
imagegif($new_imgx, $toFile);
break;
case 2:
imagejpeg($new_imgx, $toFile, 85);
break;
case 3:
imagepng($new_imgx, $toFile);
break;
case 6:
imagebmp($new_imgx, $toFile);
break;
default:
return false;
}
imagedestroy($new_imgx);
imagedestroy($ni);
}
imagedestroy($im);
return true;
}

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

if (!function_exists(‘ImageResize’)) {
function ImageResize($srcFile, $toW, $toH, $toFile = “”) {
global $cfg_photo_type;
if ($toFile == “”) {
$toFile = $srcFile;
}
$info = “”;
$srcInfo = GetImageSize($srcFile, $info);
switch ($srcInfo[2]) {
case 1:
if (!$cfg_photo_type[‘gif’]) {
return false;
}
$im = imagecreatefromgif($srcFile);
break;
case 2:
if (!$cfg_photo_type[‘jpeg’]) {
return false;
}
$im = imagecreatefromjpeg($srcFile);
break;
case 3:
if (!$cfg_photo_type[‘png’]) {
return false;
}
$im = imagecreatefrompng($srcFile);
break;
case 6:
if (!$cfg_photo_type[‘bmp’]) {
return false;
}
$im = imagecreatefromwbmp($srcFile);
break;
}
$srcW = ImageSX($im);
$srcH = ImageSY($im);
if ($srcW <= $toW && $srcH <= $toH) {
return true;
}
//缩略生成并裁剪
$newW = $toH * $srcW / $srcH;
$newH = $toW * $srcH / $srcW;
if ($newH >= $toH) {
$ftoW = $toW;
$ftoH = $newH;
} else {
$ftoW = $newW;
$ftoH = $toH;
}
if ($srcW > $toW || $srcH > $toH) {
if (function_exists(“imagecreatetruecolor”)) {
@$ni = imagecreatetruecolor($ftoW, $ftoH);
if ($ni) {
imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
//裁剪图片成标准缩略图
$new_imgx = imagecreatetruecolor($toW, $toH);
if ($newH >= $toH) {
imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH – $toH) / 2, $toW, $toH, $toW, $toH);
} else {
imagecopyresampled($new_imgx, $ni, 0, 0, ($newW – $toW) / 2, 0, $toW, $toH, $toW, $toH);
}
switch ($srcInfo[2]) {
case 1:
imagegif($new_imgx, $toFile);
break;
case 2:
imagejpeg($new_imgx, $toFile, 85);
break;
case 3:
imagepng($new_imgx, $toFile);
break;
case 6:
imagebmp($new_imgx, $toFile);
break;
default:
return false;
}
imagedestroy($new_imgx);
imagedestroy($ni);
}
imagedestroy($im);
return true;
}
}

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

发表评论

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

立即查看 了解详情