php 图片等比缩放

 1 /**
 2      * @method 图片等比缩放
 3      * @param string $srcImage   源图片路径
 4      * @param string $toFile     目标图片路径
 5      * @param integer $maxWidth   最大宽
 6      * @param integer $maxHeight  最大高
 7      * @param integer $imgQuality 图片质量
 8      * @return 
 9      */    
10     function resize($srcImage,$toFile,$maxWidth = 100,$maxHeight = 100,$imgQuality=100)
11     {
12     
13         list($width, $height, $type, $attr) = getimagesize($srcImage);
14         if($width < $maxWidth  || $height < $maxHeight) return ;
15         switch ($type) {
16             case 1: $img = imagecreatefromgif($srcImage); break;
17             case 2: $img = imagecreatefromjpeg($srcImage); break;
18             case 3: $img = imagecreatefrompng($srcImage); break;
19         }
20         $scale = min($maxWidth/$width, $maxHeight/$height); //求出绽放比例
21         
22         if($scale < 1) {
23             $newWidth = floor($scale*$width);
24             $newHeight = floor($scale*$height);
25             
26             $newImg = imagecreatetruecolor($newWidth, $newHeight);    
27 
28             //以下三行代码是解决图片缩放后背景变成黑色的。
29             $color=imagecolorallocate($newImg,255,255,255);  //颜色
30             imagecolortransparent($newImg,$color);
31             imagefill($newImg,0,0,$color);
32             
33             imagecopyresampled($newImg, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
34             $newName = "";
35             $toFile = preg_replace("/(.gif|.jpg|.jpeg|.png)/i","",$toFile);
36     
37             switch($type) {
38                 case 1: if(imagegif($newImg, "$toFile$newName.gif", $imgQuality))
39                     return "$newName.gif"; break;
40                 case 2: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality))
41                     return "$newName.jpg"; break;
42                 case 3: if(imagepng($newImg, "$toFile$newName.png", $imgQuality))
43                     return "$newName.png"; break;
44                 default: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality))
45                     return "$newName.jpg"; break;
46             }    
47             //imagedestroy() 释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符,例如 imagecreatetruecolor()。
48             imagedestroy($newImg);
49         }
50         else {
51             $bgimg = imagecreatetruecolor($maxWidth, $maxHeight);
52 
53             //以下三行代码是解决图片缩放后背景变成黑色的。
54             $color=imagecolorallocate($bgimg,255,255,255);  //颜色
55             imagecolortransparent($bgimg,$color);
56             imagefill($bgimg,0,0,$color);    
57                     
58             imagedestroy($img);
59         }
60         
61         return false;
62     }

 

 

图片缩放背景色变黑参考:http://www.jb51.net/article/56262.htm 谢谢分享!

php 5.4以上

posted on 2015-01-22 17:30  东云180  阅读(471)  评论(0编辑  收藏  举报

导航