首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >色-盗贼节点插件错误:“图像给定尚未完成加载”

色-盗贼节点插件错误:“图像给定尚未完成加载”
EN

Stack Overflow用户
提问于 2020-01-31 17:47:11
回答 2查看 622关注 0票数 0

在Node/Express中工作,我试图让npm包偷色贼从图像中获取主导颜色,但由于“给定的图像尚未完成加载”,它失败了。

这张照片又是本地的,所以不应该有这个特殊的问题。除此之外,color-thief还返回了一个承诺,我使用的是异步/等待,所以无论加载映像花费多长时间,它都应该等待,而不是抛出错误。

下面是我的SSCCE代码:

代码语言:javascript
复制
const ColorThief = require('color-thief');

let colorThief = new ColorThief();

async function getDominantColor() {
    const img = 'public/img/seed/big-waves-2193828__340.webp';
    const dominantColor = await colorThief.getColor(img);
    console.log(dominantColor);
}

getDominantColor();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-31 17:57:11

问题是这个插件显然不支持.webp文件。

它在.jpg.png中工作得很好,尽管文档 (不容易到达)并没有显式地声明它支持/不支持哪些文件类型。

我已经提交了一个特征请求,用于添加对webp的支持,或者使用支持的文件类型的显式列表更新文档,但是作者在博客的最底层声明了有关该项目的内容:

“短期内,我不打算在剧本上做更多的工作。”

我想我会在将来用这个来救别人一些头痛和时间

票数 3
EN

Stack Overflow用户

发布于 2020-05-07 11:25:46

根据R Greenstreet上面的答案,色盗贼不支持.jpg.png以外的其他格式.

因此,要解决这个问题,您需要动态转换图像。

我能找到的最快、最方便的方法就是使用节点sharp模块。代码本身只是几行..。

代码语言:javascript
复制
const sharp = require('sharp');

let image = await sharp(imageData);
let imageData = await image.metadata();

if (imageData.format === 'webp') {
    image = await image.toFormat('png').toBuffer();
} else {
    image = await image.toBuffer();
}

我知道,这不是最优的解决方案,但如果你想要一个稳定的修复,这应该是好的。

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

https://stackoverflow.com/questions/60008878

复制
相关文章

相似问题

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