canvas-emoji-optimize
v1.2.2
Published
```bash $ npm install -save canvas-emoji-optimize ```
Downloads
10
Readme
canvas-emoji-optimize
description
Since the original author no longer maintained it, I changed some logic based on canvas-emoji.
Installation
$ npm install -save canvas-emoji-optimize
By default, binaries for macOS, Linux and Windows will be downloaded. If you want to build from source, use npm install --build-from-source
and see the Compiling section below.
The minimum version of Node.js required is 6.0.0.
Compiling
If you don't have a supported OS or processor architecture, or you use --build-from-source
, the module will be compiled on your system. This requires several dependencies, including Cairo and Pango.
For detailed installation information, see the wiki. One-line installation instructions for common OSes are below. Note that libgif/giflib, librsvg and libjpeg are optional and only required if you need GIF, SVG and JPEG support, respectively. Cairo v1.10.0 or later is required.
| OS | Command |
| ------- | -------------------------------------------------------------------------------------------------------- |
| OS X | Using Homebrew:brew install pkg-config cairo pango libpng jpeg giflib librsvg
|
| Ubuntu | sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
|
| Fedora | sudo yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel
|
| Solaris | pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto
|
| OpenBSD | doas pkg_add cairo pango png jpeg giflib
|
| Windows | See the wiki |
| Others | See the wiki |
Mac OS X v10.11+: If you have recently updated to Mac OS X v10.11+ and are experiencing trouble when compiling, run the following command: xcode-select --install
. Read more about the problem on Stack Overflow.
If you have xcode 10.0 or higher installed, in order to build from source you need NPM 6.4.1 or higher.
Quick Example
const { createCanvas } = require("canvas");
const { CanvasEmoji } = require("canvas-emoji");
const fs = require("fs");
function drawPngReplaceEmoji() {
const canvas = createCanvas(800, 200);
const canvasCtx = canvas.getContext("2d");
const canvasEmoji = new CanvasEmoji(canvasCtx);
const a = canvasEmoji.drawPngReplaceEmoji({
text: "测试一下哦💋💃测试一下💋测试一下💋💃测试一下💋测试一下💋💃",
fillStyle: "#000000",
font: "bold 12px Impact",
x: 0,
y: 100,
emojiW: 12,
emojiH: 12,
length: 20
});
const out = fs.createWriteStream(__dirname + "/test.png");
const stream = canvas.createPNGStream();
stream.pipe(out);
out.on("finish", () => console.log("The PNG file was created."));
return a;
}
async function drawPngReplaceEmojiWithEmojicdn() {
const canvas = createCanvas(800, 200);
const canvasCtx = canvas.getContext("2d");
const canvasEmoji = new CanvasEmoji(canvasCtx);
const a = await canvasEmoji.drawPngReplaceEmojiWithEmojicdn({
text: "测试一下哦💋💃测试一下💋测试一下💋💃测试一下💋测试一下💋💃",
fillStyle: "#000000",
font: "bold 12px Impact",
x: 0,
y: 100,
emojiW: 12,
emojiH: 12,
length: 20,
emojiStyle: 'apple'
});
const out = fs.createWriteStream(__dirname + "/test2.png");
const stream = canvas.createPNGStream();
stream.pipe(out);
out.on("finish", () => console.log("The PNG file was created."));
return a;
}
console.log(drawPngReplaceEmoji());
drawPngReplaceEmojiWithEmojicdn();
Method
// Use local images, faster
drawPngReplaceEmoji(data: DrawPngReplaceEmojiParams): {x: number;};
// This method uses network pictures, and the style is more comprehensive
drawPngReplaceEmojiWithEmojicdn(data: DrawPngReplaceEmojiParams): Promise<{ x: number; }>;
参数
| 参数 | 描述 | 类型 | 是否必须 | default | | --------- |--------------------------------------------------------|--------| -------- |---------| | text | 可能含有 emoji 表情的字符串 | string | 是 | | fillStyle | canvas 的 fillStyle | string | 是 | | font | canvas 的 font | string | 是 | | x | Canvas 坐标 x | number | 是 | | y | Canvas 坐标 y | number | 是 | | emojiW | emoji 表情的宽度 | number | 是 | | emojiH | emoji 表情的高度 | number | 是 | | length | 如果字符太长后面会超过 length 大小的会用...表示 | number | 否 | | emojiStyle | emoji样式,only support drawPngReplaceEmojiWithEmojicdn() | string | 否 | google |
Supported emojiStyle styles:
- apple
- microsoft
- samsung
- messenger
- joypixels
- openmoji
- emojidex
- lg
- htc
- mozilla
返回
| 字段 | 描述 | | ---- | ---------------------- | | x | 完成后的 Canvas 坐标 x |