织梦DedeCMS模板图片过大自动等比例裁剪压缩
在网站上使用过大的图片会严重影响页面的加载速度。如果不是图片站,一般来讲没有必要上传太大的图片,因为访客可能耐不住加载的时间就离开了,严重影响用户体验。使用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后台的基本设置里面将其关闭即可。
咨询客服
咨询客服
英文演示为原版演示地址,位于境外国内访问可能比较缓慢(建议爬梯浏览),你在本站所下载的主题等源码仅供测试学习之用,如果要商用请购买 正版授权,以便获得官方的更新和售后服务。
本站承接WordPress/织梦/帝国cms主题安装、深度汉化、加速优化等业务,详询在线客服!