javascript - 压缩像素集的图像颜色空间

标签 javascript image algorithm colors compression

我遇到的情况是,我收到了上传的图像,将其大小调整为小于 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/

相关文章:

ruby-on-rails - Rails 回形针,多个不同类型(PDF、图像、文档...)

javascript - 按项目的标题和描述过滤 TreeView 并显示父项的算法

html - 检测两个 HTML 页面是否相似的算法?

javascript - React-Native:避免文本换行

javascript - Knockout Object Literals 不适用于谷歌地图?

javascript - 为什么 canvas.toDataURL() 不会为图像生成与 Ruby 中相同的 base64?

algorithm - 3 个进程的 Dekker 算法

javascript - HTML5 Canvas - 在屏幕上显示像素颜色数组的最快方式

javascript - 多维数组到对象

android - AsyncTask 加载图片 RecyclerView