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(笔记)
Oct 06 Javascript
基于jquery插件实现常见的幻灯片效果
Nov 01 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
js html实现计算器功能
Nov 13 Javascript
微信小程序扫描二维码获取信息实例详解
May 07 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP编写RESTful接口
2016/02/23 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python 统计代码行数简单实例
2017/05/04 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Flask之flask-script模块使用
2018/07/26 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
大学生思想汇报范文
2013/12/31 职场文书
童装店创业计划书
2014/01/09 职场文书
普通党员对照检查材料
2014/08/28 职场文书
学期个人自我总结
2015/02/13 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫