Мне нужно полученное RGB значение пикселя отнести к 7 основным цветам, каким образом это сделать на Java?
Наверно, как-нибудь вот так можно сделать. Задаете массив цветов, значения которого вам нужны (радуга в данном случае), а потом находите ближайший.
public int nearestRainbowColor(int color) {
int[] rainbow = {
0xff0000, // каждый
0xff7f00, // охотник
0xffff00, // желает
0x00ff00, // знать
0x42aaff, // где
0x0000ff, // сидит
0x8f00ff // фазан
};
int minDiff = Integer.MAX_VALUE;
int nearestColorIndex = 0;
for (int i = 0; i < rainbow.length; i++) {
if (diffBetween(color, rainbow[i]) < minDiff) {
minDiff = diffBetween(color, rainbow[i]);
nearestColorIndex = i;
}
}
return rainbow[nearestColorIndex];
}
public static int diffBetween(int c1, int c2) {
int r1 = c1 / 0x010000;
int g1 = (c1 % 0x010000) / 0x00100;
int b1 = c1 % 0x000100;
int r2 = c2 / 0x010000;
int g2 = (c2 % 0x010000) / 0x00100;
int b2 = c2 % 0x000100;
return Math.abs( r1 - r2 ) + Math.abs( g1 - g2 ) + Math.abs ( b1 - b2 );
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости