01 | <?php |
02 | /* |
03 | *@im //需要缩放的图片资源 |
04 | *@ filetype //制作的缩略图文件类型 |
05 | *@dstimW //缩放的图片的宽度 |
06 | *@dstimH //缩放的图片的高度 |
07 | *@thumbname //缩略图文件名字 |
08 | function makethumb( $im , $dstimW , $dstimH , $thumbname , $filetype ){ |
09 | //获取im的宽度和高度 |
10 | $pic_W =imagesx( $im ); |
11 | $pic_H =imagesy( $im ); |
12 | $arr = array (); |
13 | swith( $filetype ){ |
14 | case 'jpg' : |
15 | $arr [ $filetype ]= "imagejpeg" ; |
16 | break ; |
17 | case 'png' ; |
18 | $arr [ $filetype ]= "imagepng" ; |
19 | break ; |
20 | case 'jif' ; |
21 | $arr [ $filetype ]= "imagegif" ; |
22 | } |
23 | if (( $dstimgW && $dstimgW < $pic_W ) || ( $dstimgH && $dstimgH < $pic_H ) ){ |
24 | if ( $dstimgW && $dstimgW < $pic_W ){ |
25 | $dsimgWratio = $dstimgW / $pic_w ; |
26 | $resizereagW =true; |
27 | } |
28 | if ( $dstimgH && $ $dstimgH < $pic_H ){ |
29 | $dsimgHratio = $dstimgH / $pic_H ; |
30 | $resizerreagH =true; |
31 | } |
32 | //缩略图宽高和原图宽高比,取最小的那个 |
33 | if ( $resizereagW && $resizerreagH ){ |
34 | if ( $dsimgWratio < $dsimgHratio ) |
35 | $radio = $dsimgWratio ; |
36 | else |
37 | $radio = $dsimgHratio ; |
38 | } |
39 | if ( $resizereagW && ! $resizerreagH ){ |
40 | $radio = $dsimgWratio ; |
41 | } |
42 | if (! $resizereagW && $resizerreagH ){ |
43 | $radio = $dsimgHratio ; |
44 | } |
45 | $imgnewW = $pic_W * $radio ; |
46 | $imgnewH = $pic_H * $radio ; |
47 | if (function_exists( "imgcopyresampled" )){ |
48 | //创建目标资源画布 |
49 | $dst = imagecreatetruecolor ( $imgnewW , $imgnewH ); |
50 | imagecopyresampled ( $dst , $im ,0,0,0,0, $imgnewW , $imgnewH , $pic_W , $pic_H ); |
51 | } else { |
52 | $dst =imagecreate( $imgnewW , $imgnewH ); |
53 | imagecopyresized ( $dst , $im ,0,0,0,0, $imgnewW , $imgnewH , $imgnewH , $pic_W , $pic_H ); |
54 | } |
55 | $arr [ $filetype ]( $dst , $thumbname . ".$filetype" ); |
56 | imagedestroy ( $dst ); |
57 | } else { //缩略图自身的宽和高已经大于了原图的宽和高 |
58 | //则缩略图的宽和缩略的高就是原图的宽和原图的高 |
59 | $arr [ $filetype ]( $im , $thumbname . ".$filetype" ); |
60 | imagedestroy(); |
61 | } |
62 | } |
63 | ?> |