我遇到的情况是,我收到了上传的图像,将其大小调整为小于 100 x 100,并提取了每个像素的颜色。因此,有关压缩图像的所有数据都可以存储在四个变量中:
width
- (int) 图像的整体宽度
height
- (int) 图像的整体高度
colors
- (数组)具有唯一 RGB 值的对象数组
pixels
- (Array)二维数组,索引引用colors
对于我的实现,我希望将颜色空间压缩到 20 种独特颜色以下。我应该使用什么样的算法来融合和减少像素表达的独特颜色的数量?
我没有这方面的伪代码,但我认为一定有某种方法可以找出二十种最不同的颜色(使用 R、G 和 B 值与平均值的最大方差)。然后,我可以将其他颜色分组到它们变化最小的其他颜色之一下,并对每个组收到的值进行平均。但是,我不知道如何实现这一点,并对这种方法的有效性持怀疑态度。
想法?
最佳答案
我同意吉姆·米歇尔的观点。您需要 JavaScript 库来进行颜色量化。
Color quantization is the process of reducing an image with thousands or millions of colors to one with fewer (usually 256).
您可以使用RgbQuant.js并在选项中您可以设置所需的颜色编号。
// options
var opts = {
colors: 256, // desired palette size
//...
};
你可以看到这个demo在实现之前。
关于javascript - 压缩像素集的图像颜色空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49766361/