html - 如何有效地在 Canvas 上加载和绘制表情符号?

标签 html canvas html5-canvas emoji

我想在 html Canvas 上打印一个表情符号。
可以使用图像来完成,但是很麻烦。有没有更好的办法?

const canvas = document.querySelector("#canvas");
const contex = canvas.getContext("2d");

var img = new Image();
img.src = "emoji.jpg";
img.addEventListener(
  "load",
  () => {
    context.drawImage(img, 0, 0, 200, 200);
  }
);
img.src = "img.jpg";
#canvas {
  background: red;
}
<canvas id="canvas"></canvas>

编辑:
好吧,我认为我的问题被误解了。我能够在 Canvas 上将表情符号绘制为图像。我不想那样做。因为在 Canvas 上打印之前我必须对所有表情符号进行截图并裁剪它们,这很麻烦。我正在寻找一种更有效的方法。

最佳答案

您可以使用 fillText 绘制 unicode 表情符号。

您可以从 emojipedia 复制和粘贴表情符号。

我当然不是这方面的专家,所以我不知道这样做是否有很大的缺点,但无论如何,这里有一些事情需要考虑。

  • 这可能不适用于所有浏览器/操作系统。
  • 除非您使用自定义字体
  • ,否则浏览器/系统之间的标准表情符号看起来可能会有所不同
  • 您应该确保您的 js 被读取为 UTF-8 以使其正常工作。这是 HTML5 的标准,因此您可能不必更改任何内容,除非它对您不起作用。


  • const canvas = document.querySelector("#canvas");
    const contex = canvas.getContext("2d");
    
    // The size of the emoji is set with the font
    contex.font = '100px serif'
    // use these alignment properties for "better" positioning
    contex.textAlign = "center"; 
    contex.textBaseline = "middle"; 
    // draw the emoji
    contex.fillText('😜😂😍', canvas.width / 2, canvas.height / 2)
    #canvas {
      background: #ccc;
    }
    <canvas id="canvas"></canvas>

    关于html - 如何有效地在 Canvas 上加载和绘制表情符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56312457/

    相关文章:

    javascript - 在音频播放器中添加缓冲条

    javascript - 如何用html5 canvas元素绘制透明图片

    javascript - 更新 firefox 55 后,内联图像 (img) 未通过 SVG 在 HTML CANVAS 中呈现

    javascript - Image caption - 我不想让它消失

    javascript - 展开折叠树

    javascript - 当页面处于事件状态时更改类

    html - 在 Angular 2 应用程序中选择时向按钮添加一个勾号

    javascript - 如何向使用 Canvas 绘制的线条添加箭头?

    javascript - 性能警告Processing.js

    javascript - 如何使用 HTML5 canvas 标签显示视频