18910140161

DEDE使用技巧之:自动剪裁缩略图

顺晟科技

2019-08-16 15:31:29

416

相信很多使用dede的朋友都知道,dede的缩略图设计的很不合理,小图的时候还可以,大图的时候就会变形了,非常影响美观,如果用dede来做图片站那么建议大家最好自己动手按照下面的教程操作一面,让你的网站更加漂亮美观。

第一步,.首先在网站后台系统中设置网站缩略图尺寸大小和模板中调用图片最大尺寸同样。

就是在dede后台的系统设置里面,设置图片的宽和高。然后就根据我们设定好的宽和高来剪裁

第二步,.再打开文件"include/helpers/extend.helpes.php"在最下面加上以下代码

if ( ! function_exists('thumb'))

{

function thumb($imgurl, $width, $height, $bg = true)

{

global $cfg_mainsite,$cfg_multi_site;

$thumb = eregi("http://",$imgurl)?str_replace($cfg_mainsite,'',$imgurl):$imgurl;

list($thumbname,$extname) = explode('.',$thumb);

$newthumb = $thumbname.'_'.$width.'_'.$height.'.'.$extname;

if(!$thumbname || !$extname || !file_exists(DEDEROOT.$thumb)) return $imgurl;

if(!file_exists(DEDEROOT.$newthumb))

{

include_once DEDEINC.'/image.func.php';

if($bg==true)

{

ImageResizeNew(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb);

}

else

{

ImageResize(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb);

}

}

return $cfg_multi_site=='Y'?$cfg_mainsite.$newthumb:$newthumb;

}

}

调用方法:

标签 : [field:picname function='thumb(@me,$width,$height,$bg)'/]

参数说明:

$width:缩略图宽度(整数)

$height:缩略图高度(整数)

$bg:是否用空白填补,默认自动填补,背景填充颜色在系统-附件设置里(true/false)

举例:

调用长宽为100像素的缩略图:[field:picname function='thumb(@me,100,100)'/]

保留原有比例,不自动填充(不建议):[field:picname function='thumb(@me,100,100,false)'/]

----

第三步,.再到 include/helpers/image.helpes.php 中写入以下代码

/**

* 缩图片自动生成函数,来源支持bmp、gif、jpg、png

* 但生成的小图只用jpg或png格式

* @access public

* @param string $srcFile

* @param string $toW 转换到的宽度

* @param string $toH 转换到的高度

* @param string $toFile 输出文件到

* @return string

*/

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;

}

}

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航