Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用特殊unicode渲染文本图像?_Javascript_Node.js_Image_Npm - Fatal编程技术网

Javascript 使用特殊unicode渲染文本图像?

Javascript 使用特殊unicode渲染文本图像?,javascript,node.js,image,npm,Javascript,Node.js,Image,Npm,我想生成并提供文本的图像 目前我正在尝试使用: 但是text2png似乎无法使用unicode/emoji 它正在转动text2png当前无法执行此操作 它取决于节点画布,而节点画布又取决于cairo。在撰写本文时,Cairo的稳定版本(1.14.12)似乎不支持表情符号 但是,cairo的开发版本(1.15.8)支持emoji 功能和增强功能 支持彩色表情符号,以OpenType字体存储为PNG图像 因此,也许构建并尝试强制节点画布使用这个更高版本的cairo会奏效 现在,我找到了这个包

我想生成并提供文本的图像

目前我正在尝试使用:

但是
text2png
似乎无法使用unicode/emoji


它正在转动
text2png
当前无法执行此操作

它取决于节点画布,而节点画布又取决于cairo。在撰写本文时,Cairo的稳定版本(1.14.12)似乎不支持表情符号

但是,cairo的开发版本(1.15.8)支持emoji

功能和增强功能

  • 支持彩色表情符号,以OpenType字体存储为PNG图像
因此,也许构建并尝试强制
节点画布
使用这个更高版本的cairo会奏效


现在,我找到了这个包裹。它将HTML转换为图像(或PDF,但我不会使用它)

确保还安装了命令行工具。node.js包
wkhtmltox
依赖它生成图像。(我们不关心
wkhtmltopdf

将所有文本弹出到某个外部HTML文档中,
/content.HTML


这里有一些中文 信!
然后,要呈现此内容,请执行以下操作:

const fs=require('fs');
const wkhtmltox=require('wkhtmltox');
const converter=new wkhtmltox();
image(fs.createReadStream('content.html'),{format:'png})
.pipe(fs.createWriteStream('image.png');
我们在这里管道PNG缓冲区,您也可以管道到HTTP响应对象(任何可写流)

wkhtmltox
可以像浏览器一样呈现一切,就我所知(甚至支持样式等),只要你安装了字体

因此,请确保安装了带有中文字形的字体


我自己还没有测试过表情符号,但我认为只要你有正确的字体,它就会工作。

只需在画布上渲染文本并使用getImageData@C5H8NNaO4我假设text2png正好相反。也许他们逃避了unicode字符我知道你已经经历了这一切,在我花时间为你写下漂亮的方向之前。。。不管怎么说,我之所以对设置如此了解是因为我写了,但不幸的是这对你没有帮助。@PatrickRoberts是的,我注意到了,我猜你已经详细介绍了节点画布的设置并移植了C5H8NNaO4的答案?从我的研究来看,它似乎可以在开罗的较新版本上运行,但我觉得设置所有这些都不太舒服。事实上,我在不久前就找到了这个解决方案,并且刚刚记得回到这个问题上来与大家分享。这并不理想(wkhtmltoimage有点慢),但它对我的atm机起作用。也许在一年内C5H8NNaO4解决方案的直接端口就可以工作了,谁知道呢?我已经在这台机器上安装了它,我刚刚编写了一个快速测试脚本,看看其他答案是否能立即得到解决。没有。正如我所说,我不知道在最新的版本上,
registerFont()
是否有效。这是一个有趣的问题,在过去的几天里,我在这方面做得很开心。在一些没有字体的linux操作系统上做了些什么,还费劲地安装了中文字体,所有这些都是很有教育意义的xD
text2png('this string', {font: '14px Courier', bgColor: 'white'})