0

我想计算丝网印刷图像上可用的纯色,并限制每个设计最多 10 种颜色,例如teespring所做的。

我已经尝试了多种技术来使用 javascript ( colorthief ) 和 imagemagick 来计算独特的颜色。然而,结果不适合此目的,因为它还考虑到所有颜色都存在于阴影或着色中。

在此处输入图像描述

上图示例,colorthief 返回 9 种独特的颜色。但如果将限制设置为 100,则返回如下。

var palette = colorThief.getPalette(image, 100);

在此处输入图像描述

所以我想知道如何检测设计是否少于 10 种颜色?

4

1 回答 1

0

我无法从您的问题中判断您是否喜欢或不喜欢 teespring 或 ColorThief 所做的事情或问题是什么,或者当您想要 10 种颜色时为什么要 100 种颜色,或者您认为 100 种颜色是错误的还是正确的...... .所以我会尝试并建议获得颜色的方法,你可以看看你是否喜欢它们。由于您对其他工具持开放态度,因此我将选择适用于 OSX、Linux 和 Windows 的 ImageMagick。

因此,从您的图像开始,您可以在命令行中让 ImageMagick 选择 10 种最佳颜色的想法,然后将它们制作成仅包含这些颜色的样本,并将其大小从 10 像素 x 1 像素调整为 500 像素所以你可以看到它:

convert motor.png -colors 10 -unique-colors -scale 500x swatch.png

在此处输入图像描述

或者,您可以 ImageMagick 在 YIQ 颜色空间中进行量化,如下所示:

convert motor.png -quantize YIQ -colors 10 -unique-colors -scale 500x swatch.png

在此处输入图像描述

或者,如果您希望颜色选择算法在选择颜色时忽略饱和度的变化,您可以转到 HSL 颜色空间并将饱和度固定为 50%,使色相和亮度不受影响,然后返回 RGB 颜色空间并按上述方法选择颜色但现在有固定的饱和度:

convert motor.png -colorspace hsl -channel G -fx 0.5 +channel -colorspace RGB -colors 10 -unique-colors -scale 500x swatch.png

在此处输入图像描述

于 2016-02-11T09:41:46.740 回答