- 1,185
- 3
Вот сделал метод для натурального смешивания цветов.
Код вроде полезный, много кому пригодится
[merge_posts_bbcode]Добавлено: 05.01.2016 23:35:06[/merge_posts_bbcode]
Знаю что можно было через Match сделать поиск наивысшего числа, но велик первый пришел на ум
Код вроде полезный, много кому пригодится
Код:
public static int[] compoundRgb(int[] colorRgb1, int[] colorRgb2)
{
float[] colorCmyk1 = rgbConvertToCmyk(colorRgb1);
float[] colorCmyk2 = rgbConvertToCmyk(colorRgb2);
float[] colorCmykR = new float[4];
for(int i = 0; i < 4; i++)
{
colorCmykR[i] = (colorCmyk1[i] + colorCmyk2[i])/2;
}
return cmykConvertToRgbInt(colorCmykR);
}
public static float[] rgbConvertToCmyk(int[] color)
{
float max = getMaxRGB(color);
float k = 1.0F - (max/255);
if(k != 0)
{
float c = (1-color[0]/255.0F-k) / (1-k);
float m = (1-color[1]/255.0F-k) / (1-k);
float y = (1-color[2]/255.0F-k) / (1-k);
return new float[]{c, m, y, k};
}
else
{
float c = (1-color[0]/255.0F);
float m = (1-color[1]/255.0F);
float y = (1-color[2]/255.0F);
return new float[]{c, m, y, k};
}
}
public static int[] cmykConvertToRgbInt(float[] color)
{
int r = (int) (255 * (1-color[0]) * (1-color[3]));
int g = (int) (255 * (1-color[1]) * (1-color[3]));
int b = (int) (255 * (1-color[2]) * (1-color[3]));
return new int[]{r, g, b};
}
public static int getMaxRGB(int[] color)
{
int max = 0;
for(int i : color)
{
if(i > max)
{
max = i;
}
}
return max;
}
Знаю что можно было через Match сделать поиск наивысшего числа, но велик первый пришел на ум