5

我正在开发一个空间壁纸共享库。我已经使用 JavaScript 库 color-thief 来检索图像的主,但我遇到了一个问题。大多数壁纸都是深色的。如果用户在搜索壁纸时选择了#07F这样的蓝色,他将不会得到许多具有这种颜色的深色壁纸,因为这些壁纸的主色将接近黑色。

我可以允许使用多种主色进行搜索(例如黑色和蓝色),但这会使搜索更加复杂。

是否有任何 JavaScript 库(必须在客户端完成)能够获得图像的主要色调?如果没有,你对我如何实现一个算法来做这件事有任何想法吗?

谢谢阅读 :)

4

1 回答 1

1

这比 Javascript 更像是一个设计问题。主色并不总是覆盖最多像素的颜色。这是吸引你眼球的颜色。例如,如果您向某人展示黑色背景上的粉红色星系图片,则主要颜色不是黑色,而是粉红色,因为主要主题是粉红色。所以你需要一个比这更复杂的算法。

此外,黑色和白色在技术上不是颜色。它们分别只是完全没有光或极端高光(或光源)。所以我会排除任何比预定义阈值更暗或更亮的东西(例如,在您的计算中排除顶部和底部的 5%)。

编辑:

我自己实际上可能会尝试在一定的阈值以上(例如,超过 X 像素计数以避免由于噪声引起的误报)以误差幅度获得最饱和像素的颜色。

编辑2:

您也许可以更改L155以测试像素的饱和度和暗度。您可能想获得一个为此目的进行 RGB->HSB 转换的库,但我不知道是否有一个好的库。

于 2012-12-30T14:53:09.863 回答