首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jimp不发送保存的图像

jimp不发送保存的图像
EN

Stack Overflow用户
提问于 2018-04-16 14:29:01
回答 2查看 2.3K关注 0票数 0

我正在尝试使用lib discord.js为我的一个不和谐的机器人设置图像处理。我从命令中获取参数,并将该文本添加到图像中,保存、发送,然后使用fs删除。下面是我的代码:

代码语言:javascript
运行
复制
const Jimp = require('jimp');
const fs = require('fs');

module.exports = {
// Information
name: 'test',
aliases: [],
description: "test af.",
usage: "<args>",
args: {
    req: true,
    min: 1,
},

// Function

run: async (client, command, msg, args) => {
    Jimp.read("img/brain.jpg").then(function(image){
        Jimp.loadFont(Jimp.FONT_SANS_32_BLACK).then(function (font) {
        image.resize(542, 767);
        image.print(font, 16, 22, args[0]);
        image.write('brain.jpg');
        });
    });
    await msg.channel.send({
        files: [
            "brain.jpg"
        ]
    });
    fs.unlinkSync('brain.jpg');
    }
}

我们的问题是,当执行命令并添加参数时,例如:".test argshere“它打印图像上的文本并保存它,但当它试图发送图像时,它会说在那个目录中找不到它,但如果我进入文件夹,它就在那里。我相信它甚至在保存之前就已经尝试发送了。我试着等待打印、写入和msg.channel.send,但似乎都不起作用。

我还想问一下如何在图像上添加一种“文本框”,这样如果一行中有太多字母,文本就会转到另一行,因为我不想让文本通过memes。这是下图:brain image meme

EN

回答 2

Stack Overflow用户

发布于 2018-04-20 11:28:15

您使用两个回调函数来编写文件,然后紧接着放入将在回调函数之前运行的代码。这是一个异步问题。如果你把发送代码放在你的write函数后面,就可以解决你的问题了。

代码语言:javascript
运行
复制
run: async (client, command, msg, args) => {
  Jimp.read("img/brain.jpg").then(function(image) {
    Jimp.loadFont(Jimp.FONT_SANS_32_BLACK).then(function(font) {
      image.resize(542, 767);
      image.print(font, 16, 22, args[0]);
      image.write('brain.jpg');
    });
  });
  // brain.jpg doesn't exist until the second callback from above is run.
  await msg.channel.send({
    files: [
      "brain.jpg"
    ]
  });
  fs.unlinkSync('brain.jpg');
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-28 00:21:07

您应该提供图像应保存在哪个文件夹中的位置。您必须使用公用文件夹,其中应包含保存图像的图像文件夹

因此代码将是

代码语言:javascript
运行
复制
image.write("public/image/brain.png");

在它之前,如果你使用的是express,你应该写

代码语言:javascript
运行
复制
const express = require('express');
const app = express();
app.use(express.static("public"));

因此,我们在这里告诉我们的服务器,我们正在使用公共文件夹

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49850812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档