Преобразование из одной (дискретной) цветовой модели в другую (дискретную) цветовой модели никогда не может быть идеальным.
Причина, по которой CMYK-RGB-CMYK никогда не будет идеально работать в JColorChooser, заключается в том, что JColorChooser отображает целых вместо плавающих чисел.Например, выберите желтый = 255 в модели CMYK и вернитесь к RGB.Вы увидите, что этот желтый цвет смешан с красным = 255 и зеленым = 255.Теперь вернитесь к CMYK, понизьте желтый до 254 и проверьте значения RGB - он все еще красный = 255 и зеленый = 255!
Теперь измените желтый на 253 в CMYK и вернитесь к RGB.Красный и зеленый по-прежнему равны 255, а синий добавляется со значением 1. Правильное значение для CMYK: желтый = 254 (предыдущий случай) может быть синим = 0,4, но для упрощения использования в JColorChooser отображаются только целые числа, поэтому синий цвет отображается как0.
Эта числовая проблема усугубляется тем фактом, что «цветовая чувствительность» этих целочисленных цветовых моделей отличается.Хотя CMYK имеет 4 измерения (голубой, пурпурный, желтый, ключевой) и поэтому может представлять 256 ^ 4 = 4294967296 разных цветов, RGB имеет 3 измерения и может представлять только 256 ^ 3 = 16777216 цветов.Таким образом, вы всегда потеряете достаточно информации при преобразовании CMYK в этот тип RGB.
Другими словами, в среднем 256 точек в цветовом пространстве CMYK представлены только 1 точкой в цветовом пространстве RGB.При обратном преобразовании одного цвета из RGB в CMYK в среднем 255 цветов в пространстве CMYK никогда не будут «достигнуты».