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 相关文章推荐
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
js操作table示例(个人心得)
Nov 29 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
Feb 17 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
Node.js实现兼容IE789的文件上传进度条
Sep 02 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 Javascript
js实现移动端轮播图
Dec 21 Javascript
jquery实现垂直手风琴导航栏
Feb 18 jQuery
手把手教你实现 Promise的使用方法
Sep 02 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
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
Python 分享10个PyCharm技巧
2019/07/13 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python字符串反转的四种方法详解
2019/12/02 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
厂长岗位职责
2014/02/19 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
2014年科室工作总结
2014/11/20 职场文书
起诉意见书范文
2015/05/19 职场文书
银行资信证明
2015/06/17 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android