下面小编就为大家带来一篇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制作圆形用户头像方法相关推荐

  1. 制作一个用户头像选择器仿 WeGame

    制作一个用户头像选择器仿 WeGame CropAvatar 作者:WPFDevelopersOrg - 驚鏵 原文链接:https://github.com/WPFDevelopersOrg/WPF ...

  2. php设置用户头像,php制作圆形用户头像的实例_自定义封装类源代码

    思路 使用图层的方法设计,共需要创建3个图像层 1.底层:最后生成的图像 2.真实用户头像:作为中间层,用户上传的真实头像图片 3.圆形蒙版:作为最上层,在蒙版中绘制圆形,并设置为透明 如图: 代码如 ...

  3. 方形图片转换成圆形图片(涉及微信用户头像方形转换成圆形)

    在一个性格测试题中最后生成一个带有用户头像的海报,中有用户的头像,在用户授权的时候拿到用户头像的url BufferedImage resultImg = null;String url=richSe ...

  4. 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像.接着去百度了一下发现出现这 ...

  5. Win11怎么更改管理员头像?Win11更改用户头像的方法

    Win11怎么更改管理员头像?如果你不喜欢当下的管理员头像,那么可以将其更换为自己喜欢的,今天我将为大家带来Win11更换管理员头像的方法,感兴趣的朋友们不要错过了哦,一起来了解下吧. Win11更换 ...

  6. 微信小程序-获取用户头像信息以及修改用户头像

    这里主要用到button的open-type功能,官网已有说明: 给button设置open-type="chooseAvatar",来使bindchooseavatar方法生效, ...

  7. iOS之设置用户头像的圆角

    1. 显示用户头像用UIImageView实现,添加默认图片后效果如下图所示,头像显示为矩形图片. 代码实现: // ViewController.m // SetUserImage // // Cr ...

  8. 微信小程序获取用户头像昵称组件封装(最新版)

    一.前言 微信小程序将在2022年11月08日对获取用户头像昵称信息的API再一次进行改动,这次的改动比较大. 更多详情查看公告:公告直达链接 我的项目比较多,而且大部分都是只需要获取用户的头像以及昵 ...

  9. Java实现用户头像上传(修改默认文件大小限制)

    概述 每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:<传统form表单提交方式的文件上传与文件存储>, ...

  10. Mac电脑修改用户头像操作步骤

    第一次使用Mac电脑的新手用户,Mac电脑如何修改用户头像,看起来确实是个很难解决的问题,但给自己心爱的Mac系统配一个个性十足的头像又是一件非常必要的事儿. Mac电脑修改用户头像操作步骤如下: 第 ...

最新文章

  1. java数值运算后精度丢失问题
  2. UA MATH574M 统计学习 Variable Selection:Cross Validation
  3. keyup常用事件_keyup事件问题
  4. iPhone、iPad的图片可以同一个名字
  5. 学习笔记2—MATLAB的copyfile技巧
  6. Vivado exception_access_violation
  7. 孙鑫VC学习笔记:第十七讲 (二) 用匿名管道实现进程间的通信
  8. 鸡啄米VS2010/MFC编程入门教程——学习3(安装VS2010)
  9. 密码学的发展(第五篇:量子加密)
  10. 美柚:女性移动APP安全攻防战
  11. Oracle创建数据库连接——DATABASE LINKS
  12. Python办公——三行代码拆分表格
  13. python的秘密_Shamir秘密共享方案 (Python)
  14. 5G射频室内测试的关键技术
  15. 【读书笔记】Haskell函数式编程入门 I 基础篇 2. 类型系统和函数
  16. 高效学习与高度自律的可行性
  17. 各类多媒体计算机硬件设备,多媒体教室主要有哪些硬件设备
  18. 一个精简内核配置的方法 (感谢 flw2 兄分享)
  19. electorn 白屏解决方案(偶发性白屏)
  20. 光学成像 |综述| 高光谱成像技术概述

热门文章

  1. 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(3)--安装Fiddler并监控IPFS表单加载过程
  2. 多元统计分析(笔记更新中...)
  3. 数据挖掘之数据仓库详述
  4. Jensen不等式及其应用
  5. 甲骨文终获Java编程语言版权
  6. 单片机微型计算机 原理及接口技术,微机原理及单片机接口技术
  7. 联想集团“2022年及未来10大科技趋势”预测
  8. spring与jdk版本要求
  9. 具有万有引力加速机理的布谷鸟搜索算法
  10. 美国邮编大全及邮政编码规范