首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果使用画布找不到图像,则显示名称头像(回退)

如果使用画布找不到图像,则显示名称头像(回退)
EN

Stack Overflow用户
提问于 2017-01-08 11:12:12
回答 3查看 912关注 0票数 0

如何在未找到实际图像时显示化身,从谷歌等名称中提取字母。

========>

我更喜欢使用画布创建回退图像的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2017-01-08 11:43:40

仅限HTML和CSS。添加您想要检测img的任何方式。

代码语言:javascript
复制
.avatar{
    background: #D770AD;
    padding: 10px;
    width: 32px;
    height: 32px;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    -ms-border-radius: 50%;
    border-radius: 50%;
    display: inline-block;
    text-align: center;
    line-height: 32px;
    font-weight: 700;
    margin-right: 5px;
    color: #FFFFFF;
  }
代码语言:javascript
复制
<div class="avatar">FL</div>

票数 2
EN

Stack Overflow用户

发布于 2017-01-08 11:16:59

我已经创建了一个解决方案,但我正在寻找更好的解决方案。在这里,它从名称创建备用画布

代码语言:javascript
复制
  var username = attr.username;
  var name = attr.name;
  var imgSrc = "https://path/to/server/"+username+".jpg";


  var canvas = document.createElement('canvas'); //es-lint disable
  canvas.width = '32';
  canvas.height = '32';
  var context = canvas.getContext('2d');
  context.fillStyle = "#D6B478";
  context.fillRect(0, 0, canvas.width, canvas.height);
  context.font = "16px 'Roboto'";
  context.fillStyle = "white";
  var nameArr = name.split(' ')
  context.fillText(nameArr[0].charAt(0)+nameArr[1].charAt(0),7,22
  var dataUrl = canvas.toDataURL();

使用错误条件处理图像加载的

代码语言:javascript
复制
  var elem = document.getElementById('#Target')
  var img = new Image();
  img.src = imgSrc;
  elem.html('<img src="'+dataUrl+'" alt="" />')
  img.onerror = function () {
    console.log("Error Occured to load Avatar for " + imgSrc);
    img.onerror = null
    img.src = dataUrl
  }
  img.onload = function () {
    elem.html('')
    elem.append(img)
  }
票数 1
EN

Stack Overflow用户

发布于 2019-05-30 16:19:07

这是用于使用javascript的图像生成器。

代码语言:javascript
复制
var colours = ["#1abc9c", "#2ecc71", "#3498db", "#9b59b6", "#34495e", "#16a085", "#27ae60", "#2980b9", "#8e44ad", "#2c3e50", "#f1c40f", "#e67e22", "#e74c3c", "#95a5a6", "#f39c12", "#d35400", "#c0392b", "#bdc3c7", "#7f8c8d"];

    var name = "Samundra Adhikari",
      nameSplit = name.split(" "),
      initials = nameSplit[0].charAt(0).toUpperCase() + nameSplit[1].charAt(0).toUpperCase();

    var charIndex = initials.charCodeAt(0) - 65,
      colourIndex = charIndex % 19;

    var canvas = document.createElement('canvas'); //es-lint disable
    canvas.width = '32';
    canvas.height = '32';
    var context = canvas.getContext("2d");
    context.fillStyle = colours[colourIndex];
    context.fillRect (0, 0, canvas.width, canvas.height);
    context.font = "16px Arial";
    context.textAlign = "center";
    context.fillStyle = "#FFF";
    context.fillText(initials,16,22);
    var dataUrl = canvas.toDataURL();
    return dataUrl;       
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41529099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档