我在页面上有一堆200x200像素的产品图片。我的第一次尝试是获取每个像素的数据(嵌套循环,一个用于x,一个用于y),然后将RGB转换为十六进制,并将它们存储在数组中,然后获取最常见的颜色。这个脚本需要一次处理96个项目。
目前,它创建了一个画布并将产品图像放入该画布,然后执行上述操作。
是否有某种平均算法可以使此过程更快?
目前,它创建了一个画布并将产品图像放入该画布,然后执行上述操作。
是否有某种平均算法可以使此过程更快?
是的!
Lokesh Dhakar创建了一个名为“color thief”的脚本,用于计算图像的主要颜色。 它使用修改过的中位数削减量化算法(MCCQ)快速聚类颜色并确定主要颜色(甚至整个调色板)。
这里有一个演示:http://lokeshdhakar.com/projects/color-thief/,该脚本在github上可用:https://github.com/lokesh/color-thief
canvas.getImageData()
,因此您可能会遇到“污染画布”安全警告问题。 - tigrou我知道使用库等工具听起来很容易,但我发现一种更简单的解决方案,基本上可以达到相同的效果。 当你应用模糊滤镜时,它会取像素强度的平均值。因此,如果你对像素值非常高的图像应用模糊,则会产生模糊效果。
filter:blur(30px);
or
filter:blur(50px);
或者适合任何东西,它平均化整个图像并为您提供一个坚实的背景颜色,这通常是图像中最突出的颜色。
这样做要简单得多,而且几乎总是有效的。只需尝试调整模糊量。
还要记得将overflow-y设置为隐藏,因为高模糊会导致图像外部出现白色填充。隐藏溢出将解决此问题。
希望能帮到您 :)