开发项目时有的情况需要将矩形图片取圆成圆形图片,例如获取头像等;所以下面的方法其实也很使用。
//图片画圆
//$imgpath为需要处理的图片路径
function yuan_img($imgpath) {
$ext = pathinfo($imgpath);
$src_img = null;
switch ($ext['extension']) {
case 'jpg':
$src_img = imagecreatefromjpeg($imgpath);
break;
case 'png':
$src_img = imagecreatefrompng($imgpath);
break;
}
$wh = getimagesize($imgpath);
$w = $wh[0];
$h = $wh[1];
$w = min($w, $h);
$h = $w;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($src_img, $x, $y);
if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
return $img;
}
这里需要注意的主要是你需要处理的图片的格式是什么,上面的方法严格遵循图片格式处理,因为有些图片后缀名是png可是它的类型却是image,所以一定要注意图片真正的格式,然后就是$bg中的背景颜色定义,背景颜色需要契合背景图片的颜色然后才能做到透明的效果
转载自:https://www.zhaokeli.com/article/8030.html