1 $width){ 25 //裁剪 26 // 改变后的图象的比例 27 $resize_ratio = ($width) / ($height); 28 // 实际图象的比例 29 $ratio = ($src_width) / ($src_height); 30 31 if ($ratio >= $resize_ratio) { 32 // 高度优先 33 //截取图片中间那一段 34 $img_center_x = intval(($src_width-($src_height * $resize_ratio))/2); 35 //如果不需要只截取中间那一段,而是从图片x=0的地方截取,则$img_center_x=0 36 $newimg = @imagecreatetruecolor($width, $height); 37 $color = imagecolorallocate($newimg,255,255,255); 38 imagecolortransparent($newimg,$color); 39 imagefill($newimg,0,0,$color); 40 @imagecopyresampled($newimg, $src_img, 0, 0, $img_center_x, 0, $width, $height, (($src_height) * $resize_ratio), $src_height); 41 // ImageJpeg($newimg); 42 }else{ 43 // 宽度优先 44 //截取图片中间那一段 45 $img_center_y = intval(($src_height-($src_width / $resize_ratio))/2); 46 //如果不需要只截取中间那一段,而是从图片y=0的地方截取,则$img_center_y=0 47 $newimg = @imagecreatetruecolor($width, $height); 48 $color = imagecolorallocate($newimg,255,255,255); 49 imagecolortransparent($newimg,$color); 50 imagefill($newimg,0,0,$color); 51 @imagecopyresampled($newimg, $src_img, 0, 0, 0, $img_center_y, $width, $height, $src_width, (($src_width) / $resize_ratio)); 52 } 53 }else{ 54 //不裁剪 55 $newimg = @imagecreatetruecolor($src_width, $src_height); 56 $color = imagecolorallocate($newimg,255,255,255); 57 imagecolortransparent($newimg,$color); 58 imagefill($newimg,0,0,$color); 59 @imagecopyresampled($newimg, $src_img, 0, 0, 0, 0, $src_width, $src_height, $src_width, $src_height); 60 } 61 62 //统一保存为png格式 63 imagepng($newimg, $dest_path); 64 65 //gc 66 imagedestroy($src_img); 67 imagedestroy($newimg); 68 } 69 70 public static function thumb_img($src_path, $dest_path,$width,$height){ 71 72 $info_arr = getimagesize($src_path); 73 $src_width = $info_arr[0]; 74 $src_height = $info_arr[1]; 75 76 switch( $info_arr['mime'] ) { 77 case 'image/gif': 78 $src_img = imagecreatefromgif( $src_path ); 79 break; 80 case 'image/jpeg': 81 $src_img = imagecreatefromjpeg( $src_path ); 82 break; 83 case 'image/png': 84 $src_img = imagecreatefrompng( $src_path ); 85 break; 86 } 87 88 // 改变后的图象的比例 89 $resize_ratio = ($width) / ($height); 90 // 实际图象的比例 91 $ratio = ($src_width) / ($src_height); 92 93 if ($ratio >= $resize_ratio) { 94 // 高度优先 95 //截取图片中间那一段 96 $img_center_x = intval(($src_width-($src_height * $resize_ratio))/2); 97 //如果不需要只截取中间那一段,而是从图片x=0的地方截取,则$img_center_x=0 98 $newimg = @imagecreatetruecolor($width, $height); 99 $color = imagecolorallocate($newimg,255,255,255); 100 imagecolortransparent($newimg,$color); 101 imagefill($newimg,0,0,$color); 102 @imagecopyresampled($newimg, $src_img, 0, 0, $img_center_x, 0, $width, $height, (($src_height) * $resize_ratio), $src_height);103 // ImageJpeg($newimg);104 }else{105 // 宽度优先106 //截取图片中间那一段107 $img_center_y = intval(($src_height-($src_width / $resize_ratio))/2);108 //如果不需要只截取中间那一段,而是从图片y=0的地方截取,则$img_center_y=0109 $newimg = @imagecreatetruecolor($width, $height);110 $color = imagecolorallocate($newimg,255,255,255); 111 imagecolortransparent($newimg,$color); 112 imagefill($newimg,0,0,$color); 113 @imagecopyresampled($newimg, $src_img, 0, 0, 0, $img_center_y, $width, $height, $src_width, (($src_width) / $resize_ratio));114 }115 116 //统一保存为png格式117 imagepng($newimg, $dest_path);118 119 //gc120 imagedestroy($src_img);121 imagedestroy($newimg);122 }123 124 /*125 * 按比例缩放图片,然后居中裁剪126 * $src_path 源文件路劲127 * $dest_path 裁剪图片存放位置128 * $width 裁剪图片宽带129 * $height 裁剪图片高度130 */131 public static function clip_img($src_path, $dest_path, $width, $height) {132 if( file_exists($src_path) ) {133 $info_arr = getimagesize($src_path);134 $src_width = $info_arr[0];135 $src_height = $info_arr[1];136 $src_ratio = $src_height / $src_width;137 $dest_ratio = $height / $width;138 139 if( $src_ratio < $dest_ratio ) {140 $ratio_width = $width;141 $ratio_height = ( $height * $src_height ) / $src_width;142 }else if( $src_ratio > $dest_ratio ) {143 $ratio_height = $height;144 $ratio_width = ( $width * $src_width ) / $src_height;145 }else {146 $ratio_height = $height;147 $ratio_width = $width;148 }149 150 switch( $info_arr['mime'] ) {151 case 'image/gif':152 $src_img = imagecreatefromgif( $src_path );153 break;154 case 'image/jpeg':155 $src_img = imagecreatefromjpeg( $src_path );156 break;157 case 'image/png':158 $src_img = imagecreatefrompng( $src_path );159 break;160 case 'image/bmp':161 //待处理162 break;163 }164 165 //等比例缩放图片166 $thumb_img = imagecreatetruecolor( intval($ratio_width), intval($ratio_height) ) ;167 $color = imagecolorallocate($thumb_img,255,255,255); 168 imagecolortransparent($thumb_img,$color); 169 imagefill($thumb_img,0,0,$color); 170 imagecopyresampled( $thumb_img, $src_img, 0, 0, 0, 0, $ratio_width, $ratio_height, $src_width, $src_height);171 172 //剪裁173 $clip_img = imagecreatetruecolor( intval($width), intval($height) );174 imagecopy( $clip_img, $thumb_img, 0, 0, ( $ratio_width - $width ) / 2, ( $ratio_height - $height ) / 2, $width, $height );175 176 //统一保存为png格式177 imagepng($clip_img, $dest_path);178 179 //gc180 imagedestroy($src_img);181 imagedestroy($thumb_img);182 imagedestroy($clip_img);183 } 184 }185 186 /*187 * 按比例缩放图片188 * type = 1 按宽为标准缩放 2 按高为标准缩放 189 */190 public static function scale_img($src_path,$dest_path,$type,$len){191 if( file_exists($src_path) ){192 $info_arr = getimagesize($src_path);193 $src_width = $info_arr[0];194 $src_height = $info_arr[1];195 if($type == 1){196 $des_width = $len;197 $des_height = ( $src_height * $des_width ) / $src_width;198 }else{199 $des_height = $len;200 $des_width = ( $src_width * $des_height ) / $src_height;201 }202 203 switch( $info_arr['mime'] ) {204 case 'image/gif':205 $src_img = imagecreatefromgif( $src_path );206 break;207 case 'image/jpeg':208 $src_img = imagecreatefromjpeg( $src_path );209 break;210 case 'image/png':211 $src_img = imagecreatefrompng( $src_path );212 break;213 case 'image/bmp':214 //待处理215 break;216 }217 218 $thumb_img = imagecreatetruecolor( intval($des_width), intval($des_height) );219 $color = imagecolorallocate($thumb_img,255,255,255); 220 imagecolortransparent($thumb_img,$color); 221 imagefill($thumb_img,0,0,$color); 222 imagecopyresampled( $thumb_img, $src_img, 0, 0, 0, 0, $des_width, $des_height, $src_width, $src_height);223 224 225 //统一保存为png格式226 imagepng($thumb_img, $dest_path);227 228 //gc229 imagedestroy($src_img);230 imagedestroy($thumb_img);231 }232 }233 234 }