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操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
第三章之Bootstrap 表格与按钮功能
Apr 25 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
php 修改密码实现代码
May 24 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
详解基于Vue/React项目的移动端适配方案
Aug 23 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 Javascript
ant design pro中可控的筛选和排序实例
Nov 17 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 组件化编程技巧
2009/06/06 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
js tab效果的实现代码
2009/12/26 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
python 调用有道api接口的方法
2019/01/03 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
Python之Sklearn使用入门教程
2021/02/19 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
Vrbo英国:预订度假屋
2020/08/19 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
遇到的Mysql的面试题
2014/06/29 面试题
医院2014国庆节活动策划方案
2014/09/21 职场文书
质量负责人岗位职责
2015/02/15 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL