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 相关文章推荐
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
Oct 24 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
JavaScript面试开发常用的知识点总结
Aug 08 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 Javascript
Bootstrap 轮播(Carousel)插件
Dec 26 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
微信小程序实现九宫格抽奖
Apr 15 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 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
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python中property属性实例解析
2018/02/10 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
python查看列的唯一值方法
2018/07/17 Python
python开发游戏的前期准备
2019/05/05 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
通俗讲解python 装饰器
2020/09/07 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
旅游管理专业个人求职信范文
2013/12/24 职场文书
高中自我评价范文
2014/01/27 职场文书
运动会致辞稿50字
2014/02/04 职场文书
先进事迹演讲稿
2014/09/01 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript