更好的将base64转换为图片并直接发送的方法

        if (config.icon) {
          data.icon = Buffer.from(data.icon.replace(/^data:image\/png;base64,/, ''), 'base64') // 将 base64 转为 Buffer
          await session.send(h.image(data.icon)) // 发送图片
        }

这是我现在的代码,就是向某api发送请求,然后请求返回的内容中,icon为一个图片的base64,然后我使用上方代码将其转换为图片进行发送,没有问题

但是,这样写的一个不完全坏的坏处是,每次处理图片时,控制台会出现一个warning:
[W] element protocol "base64:" is deprecated and will be removed in the future, please use "data:" instead

我想把这个warning去掉,即不使用现在的方式,而是使用 “data:”,但是我不知道怎么做,尝试过google, chatgpt等等方式,但是最后的成果就是代码没问题,但是图片损坏。所以来请教一下各位大蛇

1 个赞

发送 buffer 类型的图片

参考自 furbot 发送验证码图片
await session.send(h.image(buffer,'image/png'));

发送base64 类型的图片

参考自 rryth
await session.send(h('image', { url: 'data:image/png;base64,' + base64}));

5 个赞

h.image() 的一参数如果是 buffer 就需要额外传入二参数,表示图片的 mime type。

4 个赞

谢谢,但是当我使用方法2(发送base64类型的图片)时,图片可以正常被发送,但是却是损坏的(无报错),这有思路嘛

edit: 改用buffer了

2 个赞

应该要更新 node 还是 koishi 我忘了

3 个赞