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'})