首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将远程webp图像转换为png图像以将其加载到node-canvas中

如何将远程webp图像转换为png图像以将其加载到node-canvas中
EN

Stack Overflow用户
提问于 2020-11-30 23:29:13
回答 1查看 151关注 0票数 2

通常我使用以下命令将png图像导入到画布中

代码语言:javascript
复制
const image = Canvas.LoadImage('url.png')
const canvas = Canvas.createCanvas(256,256)
const ctx = canvas.getContext('2d')
ctx.drawImage(image,256,256)

但是当我尝试导入webp图像时,我得到一个错误,说webp不受支持。在对node-canvas问题的研究中,我发现this issue的导入问题似乎已经解决了,但我不知道现在如何导入webp图像。

我尝试从fix in the issue中使用Image、ImageFromBuffer(await fetch(url).buffer()),但两者都给出了错误。

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 18:39:40

我使用Sharp库解决了这个问题。

首先获取文件作为缓冲区

代码语言:javascript
复制
// axios for remote images- maybe fs for local images?
const imageResponse = await axios.get(url, {
        responseType: 'arraybuffer',
      });

使用sharp将文件转换为png:

代码语言:javascript
复制
const img = await sharp(imageResponse.data).toFormat('png').toBuffer();

然后,您可以使用loadImage

代码语言:javascript
复制
const file = await loadImage(img).then((image) => {
      ctx.drawImage(
        image,
        256,
        256
      );

      return { buffer: canvas.toBuffer(), mimetype: `image/png` };
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65076410

复制
相关文章

相似问题

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