こんにちは、gm と jimp モジュールを使用して、同じ画像を discord.js にバッファリングしようとしました。img (ユーザーのアバター) を追加するための jimp と、テキスト (ユーザーのユーザー名) を追加するための gm ですが、gm を識別させる方法が見つからないため失敗します。 jimpのバッファ結果を再度編集して送信します。以下のコードを試しました
const Discord = require("discord.js");
const Jimp = require("jimp");
const gm = require('gm').subClass({imageMagick: true})
module.exports.run = async (bot, message, args) =>
{
let GuildMember = message.mentions.members.first();
if(!GuildMember)
{
return await message.reply(" must mention someone!");
}
message.channel.startTyping();
var GetUserAvatar = (GuildMember.user.avatarURL === null) ? GuildMember.user.defaultAvatarURL : GuildMember.user.avatarURL;
var i1 = Jimp.read(GetUserAvatar);
var i2 = Jimp.read("./images/why.jpeg");
var FontSize = (GuildMember.user.username.length >= 20) ? 14 : 20;
Promise.all([i1, i2]).then(async images =>
{
await images[0].scaleToFit(120, 120).quality(100);
await images[1].composite(images[0], 30, 140).quality(100).getBuffer(Jimp.MIME_PNG, async (err, buffer) =>
{
if(err)
{
return console.log("error ==>> " + err).then(()=> message.channel.stopTyping(true)).catch(err => message.channel.stopTyping(true));
}
});
});
var images = images;
await gm(images)
.font("Helvetica.ttf", FontSize)
.fill("#111111")
.stroke("#800000")
.draw(["rotate -55 text -430, 480 '" + GuildMember.user.username.trim() + "'"])
.toBuffer(images, async function (err, buffer)
{
if(err)
{
return console.log("error ==>> " + err).then(()=> message.channel.stopTyping(true)).catch(err => message.channel.stopTyping(true));
}
await message.channel.send(new Discord.Attachment(buffer, images)).then(()=> message.channel.stopTyping(true)).catch(err => message.channel.stopTyping(true));
});
};
module.exports.help =
{
name: "what"
};