各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > dedecms

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

管理员 2021-04-08
dedecms
131
解决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;     } } 本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关推荐

扫码关注

qrcode

QQ交谈

回顶部