我尝试创建一个简单的动态徽章(png)嵌入到静态页面中,让我知道我的应用程序的状态。我想使用一个现有的PNG图像,并用Node.js在上面写一些文本。我发现很多库,但他们都使用Imagemagick或开罗作为本机依赖,我想避免安装任何其他服务器上。后来我找到了lwip,但是我真的不知道怎么用它在图片上写文字,我该怎么办呢?
cbjzeqam1#
可以使用Jimp,它有一个print方法:
var Jimp = require("jimp"); var fileName = 'test.png'; var imageCaption = 'Image caption'; var loadedImage; Jimp.read(fileName) .then(function (image) { loadedImage = image; return Jimp.loadFont(Jimp.FONT_SANS_16_BLACK); }) .then(function (font) { loadedImage.print(font, 10, 10, imageCaption) .write(fileName); }) .catch(function (err) { console.error(err); });
kmbjn2e32#
如果你想使用ttf文件,你可以使用gm这也将自动对齐文本,所以你不必跟踪你的信件大小/位置。
ttf
gm
const gm = require('gm').subClass({imageMagick: true}); gm('path/to/image.png') .fill("#FFFFFF") .font("./font.ttf", 20) .drawText(15, 10, "your text", 'southeast') //can be any location .write("./output.png", function (err) { if (!err) console.log('done'); });
2条答案
按热度按时间cbjzeqam1#
可以使用Jimp,它有一个print方法:
kmbjn2e32#
如果你想使用
ttf
文件,你可以使用gm
这也将自动对齐文本,所以你不必跟踪你的信件大小/位置。