专注于云服务器
VPS主机优惠测评
国内免备案虚拟主机

解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)

DedeCMS 织梦程序虽然目前有两个版本,一个是原来的官方版本,一个是目前也称作Dedecms的商业版本,但是考虑到版权开源等的问题,我们可能较多的人还是会使用早期的版本。目前DedeCMS版本是到5.7版本,但是我们是否有发现在上传或者自动上传的图片然后对应有缩略图的主题的时候缩略图是变形的,没有自动等比缩放或者裁剪。

如果遇到这个问题如何解决呢?

这里小编找到V5.7的解决办法,我们需要找到/include/helpers/中的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;      }  }  

这是解决办法,可以实现等比缩放,但是不能自动裁剪。小编以前给企业做网站的时候如果有需要用到缩略图的时候,我是单独给缩略图自定义个标签,然后单独上传对应尺寸大小的缩略图,这样是最为体验好的,如果是自动缩放总归会有点变形的问题。

赞(0) 打赏
转载请注明出处:晓波笔记 » 解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)
分享到: 更多 (0)
megalayer云服务器

raksmart云服务器

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

晓波笔记-VPS主机,云服务器优惠促销测评

QQ:87304394

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏