js实现文字头像的生成代码


Posted in Javascript onMarch 07, 2020

使用canvas画出文字就好啦

function gen_text_img(size, s) {
 let colors = [
 "rgb(239,150,26)", 'rgb(255,58,201)', "rgb(111,75,255)", "rgb(36,174,34)", "rgb(80,80,80)"
 ];
 let cvs = document.createElement("canvas");
 cvs.setAttribute('width', size[0]);
 cvs.setAttribute('height', size[1]);
 let ctx = cvs.getContext("2d");
 ctx.fillStyle = colors[Math.floor(Math.random()*(colors.length))];
 ctx.fillRect(0, 0, size[0], size[1]);
 ctx.fillStyle = 'rgb(255,255,255)';
 ctx.font = size[0]*0.6+"px Arial";
 ctx.textBaseline = "middle";
 ctx.textAlign = "center";
 ctx.fillText(s,size[0]/2,size[1]/2);

 return cvs.toDataURL('image/jpeg', 1);
}

效果如下某些浏览器文字不能水平居中,暂时没有找到解决办法:

js实现文字头像的生成代码 

知识点补充:前端小结:中文转颜色 - 实现根据名字自动生成头像

1、需求

    项目中有个需求,要求显示人员头像和名称列表

js实现文字头像的生成代码

而头像是名字的第一个文字和背景颜色生成,文字颜色为白色,背景自动生成。

2、分析

由于名字图像是自动生成,背景颜色不一样,可以考虑一下几种方法:

     1)使用随机数来自动生成一个16进制颜色字符串,作为头像的背景颜色;

     2)获取名字的第一个字,转换成16进制文字颜色字符串,作为头像背景颜色;

这里会有朋友说,为什么不使用base64转码为颜色值呢,在这里小编也测试过,通过base64转码后的值,很多转换成了F之后的字母,在转换成颜色时,取值无效,截图如下:

js实现文字头像的生成代码

所以这里不使用这样方法。

第一种方法比较简单,但是不可控(同一个名字的头像背景颜色可能不一样),所以我们采用第二种方式;

3、实现

// 获取名字第一个文字,转换成16进制颜色值
const { name } = this.props;
let firstName = name.substring(1, 0);
 
tranColor = (name) => {
 var str ='';
 for(var i=0; i<name.length; i++) {
  str += parseInt(name[i].charCodeAt(0), 10).toString(16);
 }
 return '#' + str.slice(1, 4);
}
const bgColor = this.tranColor(name)

这样就可以生成一个合法的16进制颜色字符串,如果需要配置不同的透明度,可以多取一位 str.slice(1, 5),因为这里转换为16进制,所以这里只取前3位(1 ~ 4)

4、结果

转换果如下:

js实现文字头像的生成代码

效果:

js实现文字头像的生成代码

可以看到名字相同时,头像背景颜色也是相同的,比随机数要好很多

总结

到此这篇关于js实现文字头像的生成代码的文章就介绍到这了,更多相关js 文字头像内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
在线编辑器的实现原理(兼容IE和FireFox)
Mar 09 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
jquery插件validate验证的小例子
May 08 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
js获取form的方法
May 06 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
Feb 03 Javascript
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 #Javascript
原生JS实现萤火虫效果
Mar 07 #Javascript
JavaScript实现轮播图片完整代码
Mar 07 #Javascript
JS实现瀑布流效果
Mar 07 #Javascript
Vue中使用better-scroll实现轮播图组件
Mar 07 #Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 #Javascript
node创建Vue项目步骤详解
Mar 06 #Javascript
You might like
php获取网站百度快照日期的方法
2015/07/29 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP 实现链式操作
2021/03/09 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
javascript折半查找详解
2015/01/26 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
Python用模块pytz来转换时区
2016/08/19 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
中学生家长评语大全
2014/04/16 职场文书
教师考察材料范文
2014/06/03 职场文书
运动会演讲稿300字
2014/08/25 职场文书
2015员工年度考核评语
2015/03/25 职场文书
大学生读书笔记范文
2015/07/01 职场文书
商场广播稿范文
2015/08/19 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
尝试使用Python爬取城市租房信息
2022/04/12 Python
Apache自带的ab压力测试工具的实现
2022/07/23 Servers