【发布时间】:2018-08-04 17:07:42
【问题描述】:
我有 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 种颜色...
如果有任何帮助,我将不胜感激,在此先感谢。
【问题讨论】:
-
尝试在您的托盘中找到与您要转换为的颜色最接近的匹配项?也许根据所有三种不同的 RGB 计算分数。
-
关于@Karolis 所说的,您可以使用矢量数学来找到从像素颜色到调色板颜色的距离并使用最近的那个。
-
一种方法是使用一些图像处理库或第三方工具nl.mathworks.com/help/matlab/ref/rgb2ind.html将图像转换为8位图像,这会将可用颜色的数量限制为256。然后找到最接近的匹配。
-
@AntonSizikov 那是关于选择调色板的。这个案例已经有一个调色板。
标签: c# image image-processing colors