我想用22种颜色来绘制任何图像,只有这22种颜色。
Image image = GetImageFromURL(""); // returns an image object
Bitmap bitmap = new Bitmap(image);
String[] colors = {
"#FFFFFF", // white
"#C1C1C1", // light grey
"#EF130B", // red
"#FF7100", // orange
"#FFE400", // yellow
"#00CC00", // light green
"#00B2FF", // cyan
"#231FD3", // blue
"#A300BA", // purple
"#D37CAA", // pink
"#A0522D", // light brown
"#000000", // black
"#4C4C4C", // dark grey
"#740B07", // dark red
"#C23800", // dark orange
"#E8A200", // dark yellow
"#005510", // dark green
"#00569E", // dark cyan
"#0E0865", // dark blue
"#550069", // dark purple
"#A75574", // dark pink
"#63300D", // dark brown
};
我怎么做到最好?我目前不知道如何将数十亿种颜色转换为这22种颜色......
我希望得到任何帮助,谢谢。
答案 0 :(得分:0)
可以使用3D颜色空间中的毕达哥拉斯距离找到每个像素的最接近的颜色匹配。我在这里解释了完整的过程,包括如何以有效的方式将此更改应用于图像:
这个问题是关于双色调色板,但只要使用每像素8位的图像作为结果,任何调色板的过程都完全相同。