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 相关文章推荐
通过上下左右键和回车键切换光标实现代码
Mar 08 Javascript
AJAX跨域请求json数据的实现方法
Nov 11 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
js实现前端分页页码管理
Jan 06 Javascript
js 调用百度分享功能
Feb 27 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
May 16 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
利用JS响应式修改vue实现页面的input值
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
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
javascript 写类方式之二
2009/07/05 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
python抓取网页内容示例分享
2014/02/24 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python中属性和描述符的正确使用
2016/08/23 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
大专应届生个人简历的自我评价
2013/10/15 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
公司建议书怎么写
2014/05/15 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
尊师重教主题班会
2015/08/14 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
python随机打印成绩排名表
2021/06/23 Python
解决Redis启动警告问题
2022/02/24 Redis
解决Oracle数据库用户密码过期
2022/05/11 Oracle