• 售前

  • 售后

热门帖子
入门百科

办理dedecms(5.6/5.7)缩略图缩放变形标题方法

[复制链接]
计划你大爷计j 显示全部楼层 发表于 2021-8-17 04:26:31 |阅读模式 打印 上一主题 下一主题
办理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修改方法(直接更换原来方法)
  1. //[2020-11-04]:解决缩略图缩放变形问题(宽度、高度为后台设置宽高)
  2. function ImageResize($srcFile, $toW, $toH, $toFile = "") {
  3.     global $cfg_photo_type;
  4.     if ($toFile == "") {
  5.         $toFile = $srcFile;
  6.     }
  7.     $info = "";
  8.     $srcInfo = GetImageSize($srcFile, $info);
  9.     switch ($srcInfo[2]) {
  10.     case 1:
  11.         if (!$cfg_photo_type['gif']) {
  12.             return false;
  13.         }
  14.         $im = imagecreatefromgif($srcFile);
  15.         break;
  16.     case 2:
  17.         if (!$cfg_photo_type['jpeg']) {
  18.             return false;
  19.         }
  20.         $im = imagecreatefromjpeg($srcFile);
  21.         break;
  22.     case 3:
  23.         if (!$cfg_photo_type['png']) {
  24.             return false;
  25.         }
  26.         $im = imagecreatefrompng($srcFile);
  27.         break;
  28.     case 6:
  29.         if (!$cfg_photo_type['bmp']) {
  30.             return false;
  31.         }
  32.         $im = imagecreatefromwbmp($srcFile);
  33.         break;
  34.     }
  35.     $srcW = ImageSX($im);
  36.     $srcH = ImageSY($im);
  37.     if ($srcW <= $toW && $srcH <= $toH) {
  38.         return true;
  39.     }
  40.     //缩略生成并裁剪
  41.     $newW = $toH * $srcW / $srcH;
  42.     $newH = $toW * $srcH / $srcW;
  43.     if ($newH >= $toH) {
  44.         $ftoW = $toW;
  45.         $ftoH = $newH;
  46.     } else {
  47.         $ftoW = $newW;
  48.         $ftoH = $toH;
  49.     }
  50.     if ($srcW > $toW || $srcH > $toH) {
  51.         if (function_exists("imagecreatetruecolor")) {
  52.                         @$ni = imagecreatetruecolor($ftoW, $ftoH);
  53.             if ($ni) {
  54.                 imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  55.             } else {
  56.                 $ni = imagecreate($ftoW, $ftoH);
  57.                 imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  58.             }
  59.         } else {
  60.             $ni = imagecreate($ftoW, $ftoH);
  61.             imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  62.         }
  63.         //裁剪图片成标准缩略图
  64.         $new_imgx = imagecreatetruecolor($toW, $toH);
  65.         if ($newH >= $toH) {
  66.             imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH - $toH) / 2, $toW, $toH, $toW, $toH);
  67.         } else {
  68.             imagecopyresampled($new_imgx, $ni, 0, 0, ($newW - $toW) / 2, 0, $toW, $toH, $toW, $toH);
  69.         }
  70.         switch ($srcInfo[2]) {
  71.         case 1:
  72.             imagegif($new_imgx, $toFile);
  73.             break;
  74.         case 2:
  75.             imagejpeg($new_imgx, $toFile, 85);
  76.             break;
  77.         case 3:
  78.             imagepng($new_imgx, $toFile);
  79.             break;
  80.         case 6:
  81.             imagebmp($new_imgx, $toFile);
  82.             break;
  83.         default:
  84.             return false;
  85.         }
  86.         imagedestroy($new_imgx);
  87.         imagedestroy($ni);
  88.     }
  89.     imagedestroy($im);
  90.     return true;
  91. }
复制代码
5.7版image.helper.php修改方法
  1. if (!function_exists('ImageResize')) {
  2.     function ImageResize($srcFile, $toW, $toH, $toFile = "") {
  3.         global $cfg_photo_type;
  4.         if ($toFile == "") {
  5.             $toFile = $srcFile;
  6.         }
  7.         $info = "";
  8.         $srcInfo = GetImageSize($srcFile, $info);
  9.         switch ($srcInfo[2]) {
  10.         case 1:
  11.             if (!$cfg_photo_type['gif']) {
  12.                 return false;
  13.             }
  14.             $im = imagecreatefromgif($srcFile);
  15.             break;
  16.         case 2:
  17.             if (!$cfg_photo_type['jpeg']) {
  18.                 return false;
  19.             }
  20.             $im = imagecreatefromjpeg($srcFile);
  21.             break;
  22.         case 3:
  23.             if (!$cfg_photo_type['png']) {
  24.                 return false;
  25.             }
  26.             $im = imagecreatefrompng($srcFile);
  27.             break;
  28.         case 6:
  29.             if (!$cfg_photo_type['bmp']) {
  30.                 return false;
  31.             }
  32.             $im = imagecreatefromwbmp($srcFile);
  33.             break;
  34.         }
  35.         $srcW = ImageSX($im);
  36.         $srcH = ImageSY($im);
  37.         if ($srcW <= $toW && $srcH <= $toH) {
  38.             return true;
  39.         }
  40.         //缩略生成并裁剪
  41.         $newW = $toH * $srcW / $srcH;
  42.         $newH = $toW * $srcH / $srcW;
  43.         if ($newH >= $toH) {
  44.             $ftoW = $toW;
  45.             $ftoH = $newH;
  46.         } else {
  47.             $ftoW = $newW;
  48.             $ftoH = $toH;
  49.         }
  50.         if ($srcW > $toW || $srcH > $toH) {
  51.             if (function_exists("imagecreatetruecolor")) {
  52.                 @$ni = imagecreatetruecolor($ftoW, $ftoH);
  53.                 if ($ni) {
  54.                     imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  55.                 } else {
  56.                     $ni = imagecreate($ftoW, $ftoH);
  57.                     imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  58.                 }
  59.             } else {
  60.                 $ni = imagecreate($ftoW, $ftoH);
  61.                 imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
  62.             }
  63.             //裁剪图片成标准缩略图
  64.             $new_imgx = imagecreatetruecolor($toW, $toH);
  65.             if ($newH >= $toH) {
  66.                 imagecopyresampled($new_imgx, $ni, 0, 0, 0, ($newH - $toH) / 2, $toW, $toH, $toW, $toH);
  67.             } else {
  68.                 imagecopyresampled($new_imgx, $ni, 0, 0, ($newW - $toW) / 2, 0, $toW, $toH, $toW, $toH);
  69.             }
  70.             switch ($srcInfo[2]) {
  71.             case 1:
  72.                 imagegif($new_imgx, $toFile);
  73.                 break;
  74.             case 2:
  75.                 imagejpeg($new_imgx, $toFile, 85);
  76.                 break;
  77.             case 3:
  78.                 imagepng($new_imgx, $toFile);
  79.                 break;
  80.             case 6:
  81.                 imagebmp($new_imgx, $toFile);
  82.                 break;
  83.             default:
  84.                 return false;
  85.             }
  86.             imagedestroy($new_imgx);
  87.             imagedestroy($ni);
  88.         }
  89.         imagedestroy($im);
  90.         return true;
  91.     }
  92. }
复制代码
到此这篇关于办理dedecms(5.6/5.7)缩略图缩放变形题目方法的文章就介绍到这了,更多干系dedecms缩略图变形题目内容请搜索草根技术分享从前的文章或继续浏览下面的干系文章,渴望大家以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作