(Canvas | Discord.js) 我正在尝试使用 `ctx.drawImage(background, 0, 0, canvas.width, canvas.height)` 设置背景,但该

Posted

技术标签:

【中文标题】(Canvas | Discord.js) 我正在尝试使用 `ctx.drawImage(background, 0, 0, canvas.width, canvas.height)` 设置背景,但该命令不起作用【英文标题】:(Canvas | Discord.js) I'm trying to set a background using `ctx.drawImage(background, 0, 0, canvas.width, canvas.height)` but the command doesn't work 【发布时间】:2020-10-25 03:22:39 【问题描述】:

如果我只使用此代码,则该命令有效:

const background = await Canvas.loadImage('./silver.jpg');

但我的图片需要多个背景。然后,我写了这段代码,但没有工作:

let backgr;

if (json.items[0].rating < 65) backgr = './bronze.jpg';
else if (json.items[0].rating > 65 && json.items[0].rating < 74) backgr = './silver.jpg';
else if (json.items[0].rating > 75 && json.items[0].rating < 74) backgr = './gold.jpg';

const background = await Canvas.loadImage(backgr);

我在控制台或 Discord 上没有收到任何错误。

【问题讨论】:

【参考方案1】:

您应该在加载之前记录 backgr 是什么,这样您就可以看到结果是什么,可能是空白的。

无论如何,我认为错误在条件句中,您使用的是 &gt;&lt;,但从不检查是否相等,如下所示:

if(rating < 65) ...
else if (rating > 65 && rating < 74) ...

如果评分 === 65 会怎样?它会跳过这两个语句,以及第三个语句

let backgr;
const rating = json.items[0].rating;

if (rating < 65) 
   backgr = './bronze.jpg';
 else if (rating < 74) 
   backgr = './silver.jpg';
 else 
   backgr = './gold.jpg';


const background = await Canvas.loadImage(backgr);

【讨论】:

谢谢。我再次检查了代码并修复了一些错误(例如... 75 &amp;&amp; json.items[0].rating &lt; 74(因为那是错误的)),然后我添加了您的提示!

以上是关于(Canvas | Discord.js) 我正在尝试使用 `ctx.drawImage(background, 0, 0, canvas.width, canvas.height)` 设置背景,但该的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 使用画布制作图像会引发错误 Canvas.createCanvas 不是函数

模糊过滤器不适用于 discord.js [重复]

Discord.js 使用来自其他消息的附件来更新嵌入中的图像

discord.js 画布图像处理

DiscordJS Canvas 附件未完全发送?

您将如何将 node.js 子进程与 discord.js 一起使用?