简体   繁体   English

discord.js 将图像放在另一个图像上

[英]discord.js putting an image on another image

I've been trying to make a command that when you send an image or a url of an image it puts that image on another image that I already have in the code and I keep getting errors every time I try changing it to either imageTemp (which is the image you put your image on) or image`` or messageAttachment```.我一直在尝试发出一个命令,当您发送图像或图像的 url 时,它将该图像放在我已经在代码中的另一个图像上,并且每次尝试将其更改为imageTemp (这是您放置图像的图像)或image`` or messageAttachment```。 I'll put my code below so you could see what the problem is.我会把我的代码放在下面,这样你就可以看到问题所在。

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.');
    }
  },
};

And here's the result and the errors I get https://imgur.com/a/C6RcTOf这是我得到的结果和错误https://imgur.com/a/C6RcTOf

结果

The Jimp.composite() method accepts a Jimp image object as its first argument. Jimp.composite()方法接受一个Jimp图像对象作为它的第一个参数。 Not an url ( messageAttachment ) as you are passing in. Also you are saving the image to buffer before you modify it.不是您传入的 url ( messageAttachment )。此外,您还要在修改图像之前将图像保存到缓冲区。

And the error you mentioned occurs when messageAttachment is null .messageAttachmentnull时,会发生您提到的错误。 You should check and return if the message has no attachments.如果邮件没有附件,您应该检查并返回。

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

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM