乖兔博客

乖兔 > CMS系统 > 织梦cms图片过大自动等比例裁剪压缩

织梦cms图片过大自动等比例裁剪压缩

乖兔 更新于: 2020-03-18 分类:CMS系统

织梦cms图片过大自动等比例裁剪压缩.jpg

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

织梦自动裁剪图片实现方法:

首先,在后台基本参数里面添加下面两个自定义全局变量

cfg_imgresize--布尔型,自动裁剪图片的开关
cfg_maxwidth--文本型,图片宽度超过这个数字自动裁剪

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

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

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

/**
 *  图片等比例缩小,来源支持bmp、gif、jpg、png
 *  但生成的小图只用jpg或png格式
 *
 * @access    public
 * @param     string  $srcFile  图片路径
 * @param     string  $toW  最大宽度,超出自动缩放为此宽度
 * @param     string  $toFile  输出文件到
 * @return    string
 */
 if ( ! function_exists('ImageResize2'))
 {
     function ImageResize2($srcFile, $toW, $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) return TRUE;
          $toWH= $srcWH=$srcW/$srcH;
          $ftoW=$toW;
          $ftoH=$toW/$toWH;
         if($srcW>$toW)
         {
             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);
             }
             switch ($srcInfo[2])
             {
                 case 1:
                     imagegif($ni,$toFile);
                     break;
                 case 2:
                     imagejpeg($ni,$toFile,100);
                     break;
                 case 3:
                     imagepng($ni,$toFile);
                     break;
                 case 6:
                     imagebmp($ni,$toFile);
                     break;
                 default:
                     return FALSE;
             }
             imagedestroy($ni);
         }
         imagedestroy($im);
         return TRUE;
     }
 }

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

打赏