php 做圆形头像,php制作圆形用户头像方法
下面小编就为大家带来一篇php制作圆形用户头像的实例_自定义封装类源代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
思路
使用图层的方法设计,共需要创建3个图像层
1.底层:最后生成的图像
2.真实用户头像:作为中间层,用户上传的真实头像图片
3.圆形蒙版:作为最上层,在蒙版中绘制圆形,并设置为透明
如图:
代码如下:
主功能类 avatar.class.php
class avatar
{
private $fileName; //文件的绝对路径(或基于最终调用文件的相对路径)
private $rgb; //颜色索引(数组 array(255,255,0) 或 16进制值 ffff00/#ffff00/ff0/#ff0)
private $size; //图像大小
private $imgInfo; //图像信息
/**
* 初始化
* Enter description here ...
* @param string $fileName 文件的绝对路径(或基于最终调用文件的相对路径)
* @param mixed $rgb 颜色索引(数组 array(255,255,0) 或 16进制值 ffff00/#ffff00/ff0/#ff0)
* @param int $size 图像大小
*/
public function __construct($fileName, $rgb, $size)
{
$this->fileName = $fileName;
if(is_array($rgb)){
$this->rgb = $rgb; //rgb颜色数组 array(255,255,0)
}else{
//有的人喜欢带#号
$rgb = trim($rgb, '#');
//处理缩写形式
if (strlen($rgb)==3){
$_tmp = $rgb[0].$rgb[0].$rgb[1].$rgb[1].$rgb[2].$rgb[2];
$rgb = $_tmp;
}
$this->rgb = $this->createRGB($rgb); //16进制值 ffff00
}
$this->size = $size;
$this->imgInfo = getimagesize($this->fileName);
if(!$this->imgInfo){
throw Exception("无法读取图像文件");
}
if(!in_array($this->imgInfo[2], array(2,3))){
//仅允许jpg和png
throw Exception("图像格式不支持");
}
}
/**
* 显示图像
* Enter description here ...
*/
public function show()
{
header("content-type:image/png");
$shadow = $this->createshadow(); //遮罩图片
//创建一个方形图片
$imgbk = imagecreatetruecolor($this->size, $this->size); //目标图片
switch ($this->imgInfo[2]){
case 2:
$imgfk = imagecreatefromjpeg($this->fileName); //原素材图片
break;
case 3:
$imgfk = imagecreatefrompng($this->fileName); //原素材图片
default:
return ;
break;
}
$realSize = $this->imgInfo[0]imgInfo[1]? $this->imgInfo[0] : $this->imgInfo[1];
imagecopyresized($imgbk, $imgfk, 0, 0, 0, 0, $this->size, $this->size, $realSize, $realSize);
imagecopymerge($imgbk, $shadow, 0, 0, 0, 0, $this->size, $this->size, 100);
//创建图像
imagepng($imgbk);
//销毁资源
imagedestroy($imgbk);
imagedestroy($imgfk);
imagedestroy($shadow);
}
/**
* 创建一个圆形遮罩
* Enter description here ...
* @param array 10进制颜色数组
*/
private function createshadow()
{
$img = imagecreatetruecolor($this->size, $this->size);
imageantialias($img, true); //开启抗锯齿
$color_bg = imagecolorallocate($img, $this->rgb[0], $this->rgb[1], $this->rgb[2]); //背景色
$color_fg = imagecolorallocate($img, 0, 0, 0); //前景色,主要用来创建圆形
imagefilledrectangle($img, 0, 0, 200, 200, $color_bg);
imagefilledarc($img, 100, 100, 200, 200, 0, 0, $color_fg, IMG_ARC_PIE);
imagecolortransparent($img, $color_fg); //将前景色转换为透明
return $img;
}
/**
* 将字符形式16进制串转为10进制
* Enter description here ...
* @param $str
*/
private function getIntFromHexStr($str)
{
$format = '0123456789abcdef';
$sum = 0;
for($i=strlen($str)-1, $c=0, $j=0; $i>=$c; $i--,$j++){
$index = strpos($format, $str[$i]);//strpos从0计算
$sum+=$index * pow(16,$j);
}
return $sum;
}
/**
* 将16进制颜色转为10进制颜色值数组(RGB)
* Enter description here ...
* @param $str 16进制串(如:ff9900)
*/
private function createRGB($str)
{
$rgb = array();
if(strlen($str) != 6){
$rgb[] = 0xff;
$rgb[] = 0xff;
$rgb[] = 0xff;
return $rgb; //默认白色
}
$rgb[] = $this->getIntFromHexStr(substr($str, 0, 2));
$rgb[] = $this->getIntFromHexStr(substr($str, 2, 2));
$rgb[] = $this->getIntFromHexStr(substr($str, 4, 2));
return $rgb;
}
}
php 做圆形头像,php制作圆形用户头像方法相关推荐
- 制作一个用户头像选择器仿 WeGame
制作一个用户头像选择器仿 WeGame CropAvatar 作者:WPFDevelopersOrg - 驚鏵 原文链接:https://github.com/WPFDevelopersOrg/WPF ...
- php设置用户头像,php制作圆形用户头像的实例_自定义封装类源代码
思路 使用图层的方法设计,共需要创建3个图像层 1.底层:最后生成的图像 2.真实用户头像:作为中间层,用户上传的真实头像图片 3.圆形蒙版:作为最上层,在蒙版中绘制圆形,并设置为透明 如图: 代码如 ...
- 方形图片转换成圆形图片(涉及微信用户头像方形转换成圆形)
在一个性格测试题中最后生成一个带有用户头像的海报,中有用户的头像,在用户授权的时候拿到用户头像的url BufferedImage resultImg = null;String url=richSe ...
- 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称
背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像.接着去百度了一下发现出现这 ...
- Win11怎么更改管理员头像?Win11更改用户头像的方法
Win11怎么更改管理员头像?如果你不喜欢当下的管理员头像,那么可以将其更换为自己喜欢的,今天我将为大家带来Win11更换管理员头像的方法,感兴趣的朋友们不要错过了哦,一起来了解下吧. Win11更换 ...
- 微信小程序-获取用户头像信息以及修改用户头像
这里主要用到button的open-type功能,官网已有说明: 给button设置open-type="chooseAvatar",来使bindchooseavatar方法生效, ...
- iOS之设置用户头像的圆角
1. 显示用户头像用UIImageView实现,添加默认图片后效果如下图所示,头像显示为矩形图片. 代码实现: // ViewController.m // SetUserImage // // Cr ...
- 微信小程序获取用户头像昵称组件封装(最新版)
一.前言 微信小程序将在2022年11月08日对获取用户头像昵称信息的API再一次进行改动,这次的改动比较大. 更多详情查看公告:公告直达链接 我的项目比较多,而且大部分都是只需要获取用户的头像以及昵 ...
- Java实现用户头像上传(修改默认文件大小限制)
概述 每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:<传统form表单提交方式的文件上传与文件存储>, ...
- Mac电脑修改用户头像操作步骤
第一次使用Mac电脑的新手用户,Mac电脑如何修改用户头像,看起来确实是个很难解决的问题,但给自己心爱的Mac系统配一个个性十足的头像又是一件非常必要的事儿. Mac电脑修改用户头像操作步骤如下: 第 ...
最新文章
- java数值运算后精度丢失问题
- UA MATH574M 统计学习 Variable Selection:Cross Validation
- keyup常用事件_keyup事件问题
- iPhone、iPad的图片可以同一个名字
- 学习笔记2—MATLAB的copyfile技巧
- Vivado exception_access_violation
- 孙鑫VC学习笔记:第十七讲 (二) 用匿名管道实现进程间的通信
- 鸡啄米VS2010/MFC编程入门教程——学习3(安装VS2010)
- 密码学的发展(第五篇:量子加密)
- 美柚:女性移动APP安全攻防战
- Oracle创建数据库连接——DATABASE LINKS
- Python办公——三行代码拆分表格
- python的秘密_Shamir秘密共享方案 (Python)
- 5G射频室内测试的关键技术
- 【读书笔记】Haskell函数式编程入门 I 基础篇 2. 类型系统和函数
- 高效学习与高度自律的可行性
- 各类多媒体计算机硬件设备,多媒体教室主要有哪些硬件设备
- 一个精简内核配置的方法 (感谢 flw2 兄分享)
- electorn 白屏解决方案(偶发性白屏)
- 光学成像 |综述| 高光谱成像技术概述
热门文章
- 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(3)--安装Fiddler并监控IPFS表单加载过程
- 多元统计分析(笔记更新中...)
- 数据挖掘之数据仓库详述
- Jensen不等式及其应用
- 甲骨文终获Java编程语言版权
- 单片机微型计算机 原理及接口技术,微机原理及单片机接口技术
- 联想集团“2022年及未来10大科技趋势”预测
- spring与jdk版本要求
- 具有万有引力加速机理的布谷鸟搜索算法
- 美国邮编大全及邮政编码规范