如何使节点画布中图像的大小始终为 128 像素

Posted

技术标签:

【中文标题】如何使节点画布中图像的大小始终为 128 像素【英文标题】:how to make the size of an image in node canvas always be 128 px 【发布时间】:2021-12-08 06:04:24 【问题描述】:

所以我在这里遇到了这个问题。我使用节点画布在我的不和谐机器人中为我和我的朋友制作图像命令,但最近我发现在我的画布上绘制时,默认的不和谐个人资料图片显示得更大,而不是自定义图片。谁能告诉我我应该怎么做才能使画在画布上的图像大小始终为 128 像素?

client.on("message", async (message) => 
  if (message.author.bot) return;
  if (message.content.startsWith("R!grave")) 
const canvas = Canvas.createCanvas(800, 450);
let ctx = canvas.getContext('2d');
let pooh = await Canvas.loadImage('./ez.jpg');
ctx.drawImage(pooh, 0, 0, canvas.width, canvas.height);

const [first, second] = [...message.mentions.users.values()]

    if (!first || !second)
      return message.channel.send('You need to mention two users!');


    let avatar1 = await Canvas.loadImage(first.displayAvatarURL( dynamic: false, format: 'png' ));
    ctx.drawImage(avatar1, 106, 34, avatar1.width * 0.9, avatar1.height * 0.9);
    let avatar2 = await Canvas.loadImage(second.displayAvatarURL( dynamic: false, format: 'png' ));
    ctx.drawImage(avatar2, 355, 91, avatar2.width * 0.9, avatar2.height * 0.9);




let attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'example.png')



    return message.channel.send(attachment);
  
);

【问题讨论】:

【参考方案1】:

您可以将固定的宽度和高度值传递给ctx.drawImage,因此画布始终以相同的大小绘制它。

ctx.drawImage(avatar2, 355, 91, 128, 128)

【讨论】:

以上是关于如何使节点画布中图像的大小始终为 128 像素的主要内容,如果未能解决你的问题,请参考以下文章

Opencv中图像的遍历与像素操作

以最快的速度获取字符串中图像的所有像素数据

如何降低 OpenCV 中图像的分辨率?

如何更改启动画面中图像的大小?

读取android中图像的所有像素块的准确颜色

OpenCV中图像的格式Mat 图像深度