使用 nodejs、express、Jimp。我无法让 Jimp 将“.print”转换为图像和“.writeAsync”,或者更准确地说,我认为问题在于我无法使用“.loadFont”和“.read”。我尝试通过嵌套在“.read”内部和外部使用“.loadFont”。我只能在没有“.print”编辑的情况下获得新保存的.png。
app.post('/invite/:email/:name', async (req,res) => {
try {
var email = atob(req.params.email);
var name = atob(req.params.name);
var data = req.body;
const inviteImage = await makeImg(name, data);
// working code for sending email with image attachment
} catch (error) {
return next(error);
}
});
function makeImg(name, data) {
return new Promise(resolve => {
const font = Jimp.loadFont(Jimp.FONT_SANS_32_WHITE)
.then(font => {
return font;
})
Jimp.read('./imgs/casualTemplate.jpg')
.then(image => {
// Do stuff with the image.
return image
.print(font, 10, 10, `hello`)
.writeAsync('./casualInvite.png');
})
.catch(err => {
// Handle an exception.
//return next(error);
});
resolve("casualInvite.png");
});
}
// some more code i have tried inside Promise, also tried mixing them
/*
const font = await Jimp.loadFont(Jimp.FONT_SANS_32_WHITE);
const image = await Jimp.read('./imgs/casualTemplate.jpg');
image.print(font, 10, 10, `hello`);
await image.writeAsync('./casualInvite.png');
resolve("casualInvite.png");
*/
我整天都在尝试我能在互联网上找到的所有方法。