DedeCMS织梦

织梦DedeCMS模板图片过大自动等比例裁剪压缩

阿里云

在网站上使用过大的图片会严重影响页面的加载速度。如果不是图片站,一般来讲没有必要上传太大的图片,因为访客可能耐不住加载的时间就离开了,严重影响用户体验。使用 DedeCMS 建站的朋友,可以通过对织梦的修改来实现当上传的图片过大的时候自动进行等比例的裁剪压缩。

织梦自动裁剪图片实现方法,首先在后台基本参数里面添加下面两个自定义全局变量

也想出现在这里?联系我们
创客主机
  1.     cfg_imgresize--布尔型,自动裁剪图片的开关
  2.     cfg_maxwidth--文本型,图片宽度超过这个数字自动裁剪

然后打开 include/dialog/select_images_post.php 找到 move_uploaded_file($imgfile, $fullfilename) or die("上传文件到 $fullfilename 失败!"); ! 在他后面添加这些代码

  1.     $imgw=getimagesize($fullfilename);if($cfg_imgresize=='Y' && $imgw[0]>$cfg_maxwidth){
  2.       ImageResize2($fullfilename,$cfg_maxwidth);}

然后在 include/helpers/image.helper.php 的最后面加入

  1.     /**
  2.      *  图片等比例缩小,来源支持bmp、gif、jpg、png
  3.      *  但生成的小图只用jpg或png格式
  4.      *
  5.      * @access    public
  6.      * @param     string  $srcFile  图片路径
  7.      * @param     string  $toW  最大宽度,超出自动缩放为此宽度
  8.      * @param     string  $toFile  输出文件到
  9.      * @return    string
  10.      */
  11.      if ( ! function_exists('ImageResize2'))
  12.      {
  13.          function ImageResize2($srcFile, $toW, $toFile="")
  14.          {
  15.  
  16.              global $cfg_photo_type;
  17.              if($toFile=='') $toFile = $srcFile;
  18.              $info = '';
  19.              $srcInfo = GetImageSize($srcFile,$info);
  20.              switch ($srcInfo[2])
  21.              {
  22.                  case 1:
  23.                      if(!$cfg_photo_type['gif']) return FALSE;
  24.                      $im = imagecreatefromgif($srcFile);
  25.                      break;
  26.                  case 2:
  27.                      if(!$cfg_photo_type['jpeg']) return FALSE;
  28.                      $im = imagecreatefromjpeg($srcFile);
  29.                      break;
  30.                  case 3:
  31.                      if(!$cfg_photo_type['png']) return FALSE;
  32.                      $im = imagecreatefrompng($srcFile);
  33.                      break;
  34.                  case 6:
  35.                      if(!$cfg_photo_type['bmp']) return FALSE;
  36.                      $im = imagecreatefromwbmp($srcFile);
  37.                      break;
  38.              }
  39.              $srcW=ImageSX($im);
  40.              $srcH=ImageSY($im);
  41.              if($srcW<=$toW) return TRUE;
  42.               $toWH= $srcWH=$srcW/$srcH;
  43.               $ftoW=$toW;
  44.               $ftoH=$toW/$toWH;
  45.              if($srcW>$toW)
  46.              {
  47.                  if(function_exists("imagecreateTRUEcolor"))
  48.                  {
  49.                      @$ni = imagecreateTRUEcolor($ftoW,$ftoH);
  50.                      if($ni)
  51.                      {
  52.                          imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  53.                      }
  54.                      else
  55.                      {
  56.                          $ni=imagecreate($ftoW,$ftoH);
  57.                          imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  58.                      }
  59.                  }
  60.                  else
  61.                  {
  62.                      $ni=imagecreate($ftoW,$ftoH);
  63.                      imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  64.                  }
  65.                  switch ($srcInfo[2])
  66.                  {
  67.                      case 1:
  68.                          imagegif($ni,$toFile);
  69.                          break;
  70.                      case 2:
  71.                          imagejpeg($ni,$toFile,100);
  72.                          break;
  73.                      case 3:
  74.                          imagepng($ni,$toFile);
  75.                          break;
  76.                      case 6:
  77.                          imagebmp($ni,$toFile);
  78.                          break;
  79.                      default:
  80.                          return FALSE;
  81.                  }
  82.                  imagedestroy($ni);
  83.              }
  84.              imagedestroy($im);
  85.              return TRUE;
  86.          }
  87.      }

将上面两个文件保存即可,之后上传图片的时候如果超过你在后台设定的宽高,就会自动对图片进行裁剪压缩。当需要上传大图不希望被裁减的时候在 DedeCMS 后台的基本设置里面将其关闭即可。

织梦 DedeCMS 模板图片过大自动等比例裁剪压缩

已有 189 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!