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 相关文章推荐
图片自动缩小 点击放大
Jul 07 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
HTML Dom与Css控制方法
Oct 25 Javascript
使用js实现关闭js弹出层的窗口
Feb 10 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
vue 解决IOS10低版本白屏的问题
Nov 17 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP自定义错误用法示例
2016/09/28 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python实现学生成绩管理系统
2020/04/05 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
python操作gitlab API过程解析
2019/12/27 Python
python内打印变量之%和f的实例
2020/02/19 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
团日活动总结书格式
2014/05/08 职场文书
本科毕业生自荐信
2014/06/02 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers