寻找图像的最常见颜色

时间:2013-03-07 05:57:56

标签: javascript html5 canvas

我在页面上有一堆产品有200x200图像。我第一次尝试获取每个像素的数据(嵌套for循环,一个用于x,一个用于y),然后将rgb转换为十六进制,并将它们存储在一个数组中,然后获得最频繁的数据。此脚本一次需要每页运行96个项目。

目前,它会创建一个画布并将产品图像放在该画布中,然后执行上述操作。

是否有某种平均算法可以加快速度?

2 个答案:

答案 0 :(得分:11)

是!

Lokesh Dhakar创造了一个名为“彩色小偷”的剧本,用于计算图像的主色。它使用修改的中值切割量化算法(MCCQ)来快速聚类颜色并确定主色(或甚至整个调色板)。

这里有一个演示:http://lokeshdhakar.com/projects/color-thief/,这里的脚本可以在github上找到:https://github.com/lokesh/color-thief

答案 1 :(得分:-1)

我知道使用库和所有这些听起来很容易,但我找到了一个更简单的解决方案,几乎可以达到目的。 当您应用模糊滤镜时,它所采用的是像素强度的平均值。因此,如果您将模糊应用于具有相当高像素值的图像,如

filter:blur(30px);

filter:blur(50px);

或任何适合的东西,它会平均显示整个图像,并为您提供坚实的背景色,大部分时间是图像中突出的颜色。

它更容易做,并且应该几乎总是工作。只是尝试修补模糊量。

还要记住将overflow-y设置为隐藏,因为高模糊会导致图像外部出现白色填充。隐藏溢出将解决这个问题。

希望有所帮助:)