用php画一个蓝底红色的圆_php把图片处理成圆形透明的头像
如果只是想給圖片加一個圓角可以參考下面文章
用到的php gd庫函數有
imagecolorat
imagesetpixel
首先是把圖片處理成圓形的:
原圖如下:
處理過之后效果:
注意圓色后面的白色為透明的,這里因為上傳文件而變成啦白啦的/**
*??blog:http://www.zhaokeli.com
*?處理成圓圖片,如果圖片不是正方形就取最小邊的圓半徑,從左邊開始剪切成圓形
*?@param??string?$imgpath?[description]
*?@return?[type]??????????[description]
*/
function?yuan_img($imgpath?=?'./tx.jpg')?{
$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?
for?($y?=?0;?$y?
$rgbColor?=?imagecolorat($src_img,?$x,?$y);
if?(((($x?-?$r)?*?($x?-?$r)?+?($y?-?$r)?*?($y?-?$r))?
imagesetpixel($img,?$x,?$y,?$rgbColor);
}
}
}
return?$img;
}
header("content-type:image/png");
$imgg?=?yuan_img();
imagepng($imgg);
imagedestroy($imgg);
原理如圖
用以下公式計算
(x-a)*(x-a)+(y-b)*(y-b)
公式成立說明當前x,y點在圓內
x,y為當前的坐標
a,b為圓的圓心位置
r為半徑
先創建一張透明的圖片,
然后一行一行的掃描原圖如圖像素點在圓內就畫出這個像素不在的就保持透明色就可以
總結
以上是生活随笔為你收集整理的用php画一个蓝底红色的圆_php把图片处理成圆形透明的头像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 躲避家居辐射杀手装扮绿色家居
- 下一篇: 边框回归的损失函数_一文搞懂常用的七种损