avatar.js

/**
*@param widths 画布宽
*@param heights 画布高
*@param fontSize 字体大小
*@param id canvas id值
*@param className img ID值或者类名
*@param name 用户名
*@param index 索引值
*/
export function draw(widths,heights,fontSize,id,className,name,index){var names = name.charAt(0)var canvas = document.getElementById(id)canvas.width = widthscanvas.height = heightsvar context = canvas.getContext('2d')const color1 = getColor()const color2 = getColor()if(color1 !== color2){context.fillStyle = color1context.fillRect(0,0,canvas.width,canvas.height)context.fillStyle = color2}//给画布字体加粗,注意:这里的 ' '是空格,如果没有空格或者为空字符串会不起作用,系统直接赋值默认值 10px sans-serifcontext.font = 'normal bold' + ' ' + fontSize + 'px sans-serif'context.textAlign = 'center'context.textBaseline = 'middle'context.fillText(names,fontSize,fontSize)var el = document.getElementById(className)//当传入的值为类名时,用这个//var el = document.getElementByClassName(className)[index]el.setAttribute('src',canvas.toDataURL('image/png'))
}
//获取动态的颜色
function getColor() {var str = '#'var colorArr = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']for(var i = 0; i < 6; i++) {var num = parseInt(Math.random() * 16)str += colorArr[num]}return str
}

user.vue

<el-table :data='List'><el-table-column><template slot-scope='scope'><span v-if='scope.row.avatar'><img :src="'http://' + scope.row.avatar" alt='' width='40' height='40' style='border-radius: 50%'></span><span v-else><img :id="'Img' + scope.row.user_id" src='' alt='' width='40' height='40' style='border-radius: 50%'><canvas :id="'headImage' + scope.row.user_id" style='display: none'></canvas></span></template></el-table-column>
</el-table><script>
import {draw} from './avatar'
export default{data(){return{List:[]}},created(){this.getUser()},methods:{getUser(){this.$axios.get('xxx').then(res => {this.List = res.data.data//注意这里必须写在this.$nextTick(function(){})中,意在在页面渲染完成后在调用该方法,否则document.getElementByID()拿不到元素this.$nextTick(function(){this.List.forEach(item => {if(!item.avatar) {draw(40,40,20,'headImage' + item.user_id,'Img' + item.user_id,item.realname,item.user_id)}})})})}}
}
</script>

vue用户没有头像用姓名首字母做头像相关推荐

  1. vue用户头像地址为““时,用姓名首字母做头像

    业务场景:个人资料或者用户头像没有图片地址时,默认使用户名字中第一个汉字做头像. 效果: 完整代码: <div class="left_img"><el-avat ...

  2. vue中根据用户昵称首字母生成头像和颜色

    需求:项目中需要做一个粗糙的评论板块,用户评论时需要显示头像,但是不需要去更换改头像 思路:用户昵称首字母作为头像,并且根据用户首字母生成固定的颜色,否则每次颜色都会随机 例如: 方法一 1.安装头像 ...

  3. 根据姓名首字母排序查询

    1.前台需要List<HashMap<String,Object>>类型的数据,先对查询出的List<UserVo>进行处理. 后台查询已经将姓名首字母查询出来(数 ...

  4. 【工具封装】Python 字典列表按中文姓名首字母排序

    第三方模块: 功       能: 汉字拼音转换模块,将汉字转为拼音:可以用于汉字注音.排序.检索. 模块名称: pypinyin 官方文档: https://pypi.org/project/pyp ...

  5. Android通讯录模糊查询搜索(号码,姓名,首字母简拼,全拼),批量选取联系人

    Android通讯录模糊查询搜索(号码,姓名,首字母简拼,全拼),批量选取联系人 公司最近的项目中遇到一个需求需要读取通讯录联系人,并需要支持对联系人的模糊查询及批量选取,网上找了好几个例子,模糊查询 ...

  6. MySQL 汉字提取首字母、姓名首字母全拼、姓名转拼音

    需要实现的功能要用函数来实现 1.汉字提取首字母 fristPinyin : 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"李"->l) CREATE FUNC ...

  7. android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,修改支持中文

    在android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,如下图: 如果联系人名字的第一位是英文字符(a-z || A-Z),则默认头像将显示该首字母. 如果支持中文时显示第一 ...

  8. IOS开发 汉字转拼音 把用户名按照姓名首字母进行排序

    //第一步 汉字转拼音 有2种方法 一种是使用ChineseString 别人写的类  第二种是IOS自带的方法 我使用的便是第二种 NSMutableString *ms = [[NSMutable ...

  9. SQL语句按照姓名首字母排序

    Mysql 前言 UTF-8 GBK 前言   最近小咸儿做项目,根据业务需求,需要将查出来的人员姓名按照拼音首字母进行排序,小咸儿选择在SQL语句上对姓名字段进行排序,这样查出来的人员就已经是排好序 ...

最新文章

  1. 量子力学考研等待计算机吗,考研《量子力学》专业课满分经验谈
  2. 机器学习实战:k-近邻算法(手写数字识别)
  3. Python网络爬虫理解
  4. exit()、_Exit() 和 _exit() 函数的区别和联系
  5. rabbitmq启动失败-报Failed to load advanced configuration file解决方法
  6. 天猫精灵 AIoT 平台将研发门槛从1000万降至40万,缩减 3 倍研发周期
  7. 基于JAVASCRIPT操作XML的无刷新分页
  8. Netty笔记(七)ChannelHandlers and Codes 整合
  9. 普元EOS之性能调优
  10. 滞留在服务器的邮件,outlook 2010 发送邮件时莫名滞留在发件箱
  11. 元图地图开放平台系统概述
  12. 手机总是耗电太快,怎么办?
  13. un9.9:实现上报及上报状态修改功能。
  14. 百万并发下的Nginx优化,看这一篇就够了!
  15. html代码的魔方加密,三维魔方加密算法如何给文本文件加密
  16. TLE两行数与轨道六根数转换
  17. TLS远程信息泄露 心脏滴血 CVE-2014-0160 漏洞复现
  18. Understanding ISP Pipeline - Noise Reduction
  19. Android培训班(62)dex文件格式3
  20. python编写植物大战僵尸_python开发植物大战僵尸游戏

热门文章

  1. 极验验证码逆向(一)
  2. 论文精读《Prototypical Networks for Few-shot Learning》
  3. Ubuntu18状态栏调整位置,放置在屏幕下方
  4. C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位、十位、和个位
  5. 等保测评 安全计算坏境之mysql数据库管理系统
  6. QML初学读书笔记(三)
  7. My first job - Goodbaby Group in Shanghai
  8. java 启动方式 java -jar xx.jar
  9. 自回归AR模型、移动平均MA模型与自回归移动平均ARMA模型的比较分析
  10. ug908中文文档获取方式 | Xilinx