Nodejs创建一个带有文本的PNG图像

7

我正在尝试创建一个新的PNG文件,通过HTTP作为响应类型image/png返回给客户端。

新文件是通过连接3个基本的PNG文件并在图像中间添加自定义文本来创建的。

问题是,在nodejs中没有内置的库可以做到这一点。我花了几个小时搜索,令我惊讶的是,没有纯JS库可以做到这一点。最接近的是node-pngjs,但它缺少添加文本的功能。我知道文本部分很复杂,因为它在某种程度上依赖于操作系统(安装的字体,与这些字体交互的DLL等)。

还有其他的node模块,它们是imageMagick (gm)和GTK (canvas)的包装器,但不幸的是,imageMagick是155MB的二进制文件,并且要使用canvas,您需要从源代码编译,安装pythonVS 2010 C++ Express Edition,而且它不适用于最新版本的GTK。

目前我得到的最好的解决方案是编写一个.NET程序集,并通过edge.js从node内部使用它,但这将需要在服务器上同时安装Windows操作系统和.NET框架。

再次强调,这里复杂的部分是在图像中添加文本。

有没有建议可以在不依赖大量外部依赖的情况下使其工作?

1个回答

3

是的,你是正确的,Node.js对于图像处理库的支持很弱,大多数都是一些CLI应用程序的包装。

我会使用的解决方案涉及PhantomJS,它具有画布和SVG支持,你可以使用这些功能。它比其他选项更轻巧,不需要安装外部应用程序。http://phantomjs.org/quick-start.html


1
谢谢指出PhantomJS,我之前不知道它。不过,我认为仅仅生成一张图片有点过头了。 - Nick
是的,图像处理并不完美,因为它需要大量的CPU和内存资源。如果没有外部库和工具,进行一些图像处理会很痛苦。 - Risto Novik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接