在Node/Express中工作,我试图让npm包偷色贼从图像中获取主导颜色,但由于“给定的图像尚未完成加载”,它失败了。
这张照片又是本地的,所以不应该有这个特殊的问题。除此之外,color-thief还返回了一个承诺,我使用的是异步/等待,所以无论加载映像花费多长时间,它都应该等待,而不是抛出错误。
下面是我的SSCCE代码:
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();发布于 2020-01-31 17:57:11
发布于 2020-05-07 11:25:46
根据R Greenstreet上面的答案,色盗贼不支持.jpg或.png以外的其他格式.
因此,要解决这个问题,您需要动态转换图像。
我能找到的最快、最方便的方法就是使用节点sharp模块。代码本身只是几行..。
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();
}我知道,这不是最优的解决方案,但如果你想要一个稳定的修复,这应该是好的。
https://stackoverflow.com/questions/60008878
复制相似问题