用PHP的PG库把任意一张图片生成圆形或者椭圆形图片,function如下:
/**
* 生成圆形图片
* @param $imgpath 图片地址/支持微信、QQ头像等没有后缀的网络图
* @param $saveName string 保存文件名,默认空。
* @return resource 返回图片资源或保存文件
*/
function yuan_img($imgpath,$saveName = '') {
$src_img = imagecreatefromstring(file_get_contents($imgpath));
$w = imagesx($src_img);$h = imagesy($src_img);
$w = $h = min($w, $h);
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
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);
}
}
}
//返回资源
if(!$saveName) return $img;
//输出图片到文件
imagepng ($img,$saveName);
//释放空间
imagedestroy($src_img);
imagedestroy($img);
}