discord.js 将一张图片放在另一张图片上
discord.js putting an image on another image
我一直在尝试发出一个命令,当您发送图像或图像的 url 时,它将该图像放在我已经在代码中的另一个图像上,并且我每次都会收到错误我尝试将其更改为 imageTemp
(这是您放置图像的图像)或 image`` or
messageAttachment```。我会把我的代码放在下面,这样你就可以看到问题所在。
const { MessageAttachment } = require('discord.js');
const Jimp = require('jimp');
const discord = require('discord.js')
module.exports = {
name: "img",
aliases: [],
run: async (client, message, args) => {
let messageAttachment = message.attachments.size > 0 ? message.attachments.array()[0].url : null
try {
let imageTemp = "https://upload.wikimedia.org/wikipedia/commons/8/8a/Banana-Single.jpg"
let image = await Jimp.read(messageAttachment);
let buffer = await image.getBufferAsync(Jimp.MIME_JPEG);
Jimp.read(imageTemp).then(image => {
image.composite(messageAttachment, 10, 10)
})
message.channel.send(new MessageAttachment(buffer));
} catch (err) {
console.log(err);
message.channel.send('Oops, there was an error. Try inputting the command again.');
}
},
};
这是我得到的结果和错误 https://imgur.com/a/C6RcTOf
Jimp.composite()
方法接受一个 Jimp
图像对象作为它的第一个参数。传入时不是 url (messageAttachment
)。此外,您在修改图像之前将图像保存到缓冲区。
而你说的错误发生在messageAttachment
为null
时。如果邮件没有附件,您应该检查 return。
const imageTemp = "https://upload.wikimedia.org/wikipedia/commons/8/8a/Banana-Single.jpg";
const messageAttachment = message.attachments.size > 0 ? message.attachments.array()[0].url : null;
// Exit if there is no message attachment present in the message
if (!messageAttachment) return;
// Resolve the temporary image url to Jimp object
const firstImage = await Jimp.read(imageTemp);
// Resolve the message attachment image url to Jimp object
const secondImage = await Jimp.read(messageAttachment);
// Composite the two images together (modifies the firstImage object)
firstImage.composite(secondImage, 10, 10);
// Save the resulting image to buffer
const buffer = await firstImage.getBufferAsync(Jimp.MIME_JPEG);
// Send the buffer as a message attachment
message.channel.send("Combined image:", {files: [{ attachment: buffer }]});
我一直在尝试发出一个命令,当您发送图像或图像的 url 时,它将该图像放在我已经在代码中的另一个图像上,并且我每次都会收到错误我尝试将其更改为 imageTemp
(这是您放置图像的图像)或 image`` or
messageAttachment```。我会把我的代码放在下面,这样你就可以看到问题所在。
const { MessageAttachment } = require('discord.js');
const Jimp = require('jimp');
const discord = require('discord.js')
module.exports = {
name: "img",
aliases: [],
run: async (client, message, args) => {
let messageAttachment = message.attachments.size > 0 ? message.attachments.array()[0].url : null
try {
let imageTemp = "https://upload.wikimedia.org/wikipedia/commons/8/8a/Banana-Single.jpg"
let image = await Jimp.read(messageAttachment);
let buffer = await image.getBufferAsync(Jimp.MIME_JPEG);
Jimp.read(imageTemp).then(image => {
image.composite(messageAttachment, 10, 10)
})
message.channel.send(new MessageAttachment(buffer));
} catch (err) {
console.log(err);
message.channel.send('Oops, there was an error. Try inputting the command again.');
}
},
};
这是我得到的结果和错误 https://imgur.com/a/C6RcTOf
Jimp.composite()
方法接受一个 Jimp
图像对象作为它的第一个参数。传入时不是 url (messageAttachment
)。此外,您在修改图像之前将图像保存到缓冲区。
而你说的错误发生在messageAttachment
为null
时。如果邮件没有附件,您应该检查 return。
const imageTemp = "https://upload.wikimedia.org/wikipedia/commons/8/8a/Banana-Single.jpg";
const messageAttachment = message.attachments.size > 0 ? message.attachments.array()[0].url : null;
// Exit if there is no message attachment present in the message
if (!messageAttachment) return;
// Resolve the temporary image url to Jimp object
const firstImage = await Jimp.read(imageTemp);
// Resolve the message attachment image url to Jimp object
const secondImage = await Jimp.read(messageAttachment);
// Composite the two images together (modifies the firstImage object)
firstImage.composite(secondImage, 10, 10);
// Save the resulting image to buffer
const buffer = await firstImage.getBufferAsync(Jimp.MIME_JPEG);
// Send the buffer as a message attachment
message.channel.send("Combined image:", {files: [{ attachment: buffer }]});