001
if ( ! function_exists('ImageResize'))
002
{
003
function ImageResize($srcFile,$toW,$toH,$toFile="")
004
{
005
global $cfg_photo_type;
006
if($toFile=="")
007
{
008
$toFile=$srcFile;
009
}
010
$info="";
011
$srcInfo=GetImageSize($srcFile,$info);
012
switch ($srcInfo[2])
013
{
014
case 1:
015
if(!$cfg_photo_type['gif'])
016
{
017
return false;
018
}
019
$im=imagecreatefromgif($srcFile);
020
break;
021
case 2:
022
if(!$cfg_photo_type['jpeg'])
023
{
024
return false;
025
}
026
$im=imagecreatefromjpeg($srcFile);
027
break;
028
case 3:
029
if(!$cfg_photo_type['png'])
030
{
031
return false;
032
}
033
$im=imagecreatefrompng($srcFile);
034
break;
035
case 6:
036
if(!$cfg_photo_type['bmp'])
037
{
038
return false;
039
}
040
$im=imagecreatefromwbmp($srcFile);
041
break;
042
}
043
$srcW=ImageSX($im);
044
$srcH=ImageSY($im);
045
if($srcW<=$toW && $srcH<=$toH )
046
{
047
return true;
048
}
049
//缩略生成并裁剪
050
$newW=$toH * $srcW / $srcH;
051
$newH=$toW * $srcH / $srcW;
052
if($newH >=$toH)
053
{
054
$ftoW=$toW;
055
$ftoH=$newH;
056
}
057
else
058
{
059
$ftoW=$newW;
060
$ftoH=$toH;
061
}
062
if($srcW>$toW||$srcH>$toH)
063
{
064
if(function_exists("imagecreatetruecolor"))
065
{
066
@$ni=imagecreatetruecolor($ftoW,$ftoH);
067
if($ni)
068
{
069
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
070
}
071
else
072
{
073
$ni=imagecreate($ftoW,$ftoH);
074
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
075
}
076
}
077
else
078
{
079
$ni=imagecreate($ftoW,$ftoH);
080
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
081
}
082
//裁剪图片成标准缩略图
083
$new_imgx=imagecreatetruecolor($toW,$toH);
084
if($newH >=$toH)
085
{
086
imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);
087
}
088
else
089
{
090
imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);
091
}
092
switch ($srcInfo[2])
093
{
094
case 1:
095
imagegif($new_imgx,$toFile);
096
break;
097
case 2:
098
imagejpeg($new_imgx,$toFile,85);
099
break;
100
case 3:
101
imagepng($new_imgx,$toFile);
102
break;
103
case 6:
104
imagebmp($new_imgx,$toFile);
105
break;
106
default:
107
return false;
108
}
109
imagedestroy($new_imgx);
110
imagedestroy($ni);
111
}
112
imagedestroy($im);
113
return true;
114
}
115
}
|
原创dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题
未经允许不得转载:HU网络 » 原创dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题














