织梦二次开发
当前位置: 主页 > 二次开发 >

dedecms上传图片时,图片宽度过大自动等比例压缩

2019-02-26 TAG:

在给客户做网站的时候,经常告诉客户说发布文章的图片要处理下再上传,但是往往客户都觉得一张张图片修改起来太麻烦了(其实我也觉得一张张图片修改,实在太麻烦了),不听劝告,经常上传的是相机或者手机拍摄的原图,这样不仅占用网站空间,而且也会严重影响到网站打开速度!

今天就为大家分享dedecms怎么实现图片过大就自动等比例压缩的方法!

dedecms图片宽度过大自动等比例压缩的方法/步骤

一、首先在后台基本参数添加2个字段 :cfg_imgresize,cfg_maxwidth ,相关设置如下:

如果觉得操作太麻烦的话,请点击这里下载懒人包,密码: p68c解压到网站根目录覆盖即可!(这是utf8版的哦!)

二、打开 include/dialog/select_images_post.php 大约63行找到  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在上传图片时宽度过大自动等比例压缩!

效果示例

 

原图和自动压缩后的图片对比

 

 

大图是原图,小图是自动压缩后的图片! 

ps:上面的图片,可能由于原图的关系导致看起来比较失真,所以又去找了个清晰点的图片,原图尺寸1280x800,压缩后的图片尺寸 800x500 ,请点击右键“在新建标签中打开图片” 以此查看原图!

 

 

这样就再也不用担心上传的图片太大了!也不用很麻烦的一张张手动修改了!

如果要上传超过设置的宽度的大图的话,请到基本参数关闭 “图片等比例缩小”,设置为 否,保存即可! 或者使用FTP等工具上传!

评论

看不清?点击更换

评论精选提示:无意义评论会被屏蔽!