解决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文件。
5.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;
}
5.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)缩略图缩放变形问题方法的文章就介绍到这了,更多相关dedecms缩略图变形问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
相关文章
织梦dedecms安全漏洞include/common.inc.php漏洞解决方法
据悉DEDECMS的全局变量初始化存在漏洞,可以任意覆盖任意全局变量,下面是具体的解决方法,需要的朋友可以参考下2021-05-13- 最近因为使用的dede系统考虑后期数据量大的问题,所以提前将dedecms优化一下,应对后期数据量大导致后台卡等问题,这里为大家分享一下,主要是思路对于新版本的dedecms需要2021-05-12
DedeCMS大数据负载性能优化方案(简单几招让你提速N倍)
今天我们分享一下DedeCMS数据负载性能优化的方法,因为目前70w条记录,导致站点后台查询慢,生成HTML也很吃力,经过下面的优化确实可以提升不少2021-05-12mysql织梦索引优化之MySQL Order By索引优化
最近基于mysql数据库的织梦系统查询与生成静态页面比较慢,所以想优化一下索引试试能不能提高一下执行效率下面是具体的实现步骤,需要的朋友可以参考一下2021-05-12织梦dedecms页面空白后开启错误信息提示功能方便调试错误
织梦后台空白、织梦后台左侧空白等相关问题,如果没有报错提示信息,不显示任何内容,对新手来说摸不着头脑,无从下手,开启织梦错误信息提示错误调试设置,让程序告诉我们2021-05-12
最近考虑用dedecms做个大数据量的网站,为什么用dedecms呢因为这个系统特别好用,但负载是软肋,很多功能只能自己动手实现了,下面就为大家分享一下具体的方法2021-05-12- 这篇文章主要介绍了加固版织梦CMS整站源码通用安装教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-03-17
- 这篇文章主要介绍了织梦DEDECMS robots优化设置的具体方法,DEDECMS自带的robots.txt文件设置很简单,并不能完全满足网站的优化要求,需要的朋友可以参考下本篇方法2020-12-02
- 这篇文章主要介绍了Dedecms网站Title标签SEO优化方法,主要涉及到如何实现"三级栏目_二级栏目_一级栏目_网站名称"的问题,需要的朋友可以参考下小编的方法2020-12-02
dedecms文章关键字(自动内链)php5.5以上版本urf-8失效的解决方法
这篇文章主要为大家详细介绍了dedecms文章关键字(自动内链)php5.5以上版本urf-8失效的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏2020-11-18



最新评论