php GD图片四角圆形处理
1 <?php 2 3 /** 4 * blog:http://www.zhaokeli.com 5 * 处理四角圆图片 6 * @param string $imgpath 源图片路径 7 * @param integer $radius 圆角半径长度默认为15,处理成圆型 8 * @return [type] [description] 9 */ 10 function radius_img($imgpath = './code_png/share.jpg', $radius = 15) { 11 $ext = pathinfo($imgpath); 12 $src_img = null; 13 switch ($ext['extension']) { 14 case 'jpg': 15 $src_img = imagecreatefromjpeg($imgpath); 16 break; 17 case 'png': 18 $src_img = imagecreatefrompng($imgpath); 19 break; 20 } 21 $wh = getimagesize($imgpath); 22 $w = $wh[0]; 23 $h = $wh[1]; 24 // $radius = $radius == 0 ? (min($w, $h) / 2) : $radius; 25 $img = imagecreatetruecolor($w, $h); 26 //这一句一定要有 27 imagesavealpha($img, true); 28 //拾取一个完全透明的颜色,最后一个参数127为全透明 29 $bg = imagecolorallocatealpha($img, 255, 255, 255, 127); 30 imagefill($img, 0, 0, $bg); 31 $r = $radius; //圆 角半径 32 for ($x = 0; $x < $w; $x++) { 33 for ($y = 0; $y < $h; $y++) { 34 $rgbColor = imagecolorat($src_img, $x, $y); 35 if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) { 36 //不在四角的范围内,直接画 37 imagesetpixel($img, $x, $y, $rgbColor); 38 } else { 39 //在四角的范围内选择画 40 //上左 41 $y_x = $r; //圆心X坐标 42 $y_y = $r; //圆心Y坐标 43 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { 44 imagesetpixel($img, $x, $y, $rgbColor); 45 } 46 //上右 47 $y_x = $w - $r; //圆心X坐标 48 $y_y = $r; //圆心Y坐标 49 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { 50 imagesetpixel($img, $x, $y, $rgbColor); 51 } 52 //下左 53 $y_x = $r; //圆心X坐标 54 $y_y = $h - $r; //圆心Y坐标 55 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { 56 imagesetpixel($img, $x, $y, $rgbColor); 57 } 58 //下右 59 $y_x = $w - $r; //圆心X坐标 60 $y_y = $h - $r; //圆心Y坐标 61 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { 62 imagesetpixel($img, $x, $y, $rgbColor); 63 } 64 } 65 } 66 } 67 return $img; 68 } 69 header("content-type:image/png"); 70 $imgg = radius_img(); 71 imagepng($imgg); 72 imagedestroy($imgg);
如果本文章已帮助到您!