使用Node.js在现有PNG上写入文本

eimct9ow  于 2022-12-22  发布在  Node.js
关注(0)|答案(2)|浏览(268)

我尝试创建一个简单的动态徽章(png)嵌入到静态页面中,让我知道我的应用程序的状态。
我想使用一个现有的PNG图像,并用Node.js在上面写一些文本。
我发现很多库,但他们都使用Imagemagick或开罗作为本机依赖,我想避免安装任何其他服务器上。
后来我找到了lwip,但是我真的不知道怎么用它在图片上写文字,我该怎么办呢?

cbjzeqam

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);
    });
kmbjn2e3

kmbjn2e32#

如果你想使用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');
        });

相关问题