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 相关文章推荐
Javascript String对象扩展HTML编码和解码的方法
Jun 02 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
Nov 05 Javascript
jquery动画1.加载指示器
Aug 24 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
vue+element实现表单校验功能
May 20 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
JS数据类型判断的几种常用方法
Jul 07 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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的大小写敏感问题整理
2011/12/29 PHP
prototype 的说明 js类
2006/09/07 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python自定义简单图轴简单实例
2018/01/08 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python input函数使用实例解析
2019/11/22 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
表彰先进集体通报
2014/01/12 职场文书
中秋晚会策划方案
2014/06/12 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
大学学生会辞职信
2015/05/13 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android