Как я могу использовать цветовое пространство HSL в Java?

Я взглянул на класс ColorSpace и нашел константу TYPE_HLS (который, по-видимому, является просто HSL в другом порядке).

Я могу использовать эту константу для создания a Color от оттенка, насыщенности и яркости? В противном случае есть ли какие-либо классы Java для этого, или я должен записать свое собственное?

17
задан Eric 8 June 2010 в 13:24
поделиться

3 ответа

1
ответ дан 30 November 2019 в 12:57
поделиться

РЕДАКТИРОВАТЬ: Я понимаю, что HSB! = HSL, ответ ниже для HSB.

Я не думаю, что здесь есть необходимость использовать ColorSpaces. Попробуйте что-то вроде следующего:

float hue = 0.9f; //hue
float saturation = 1.0f; //saturation
float brightness = 0.8f; //brightness

Color myRGBColor = Color.getHSBColor(hue, saturation, brightness);
10
ответ дан 30 November 2019 в 12:57
поделиться

Возможно, это поможет. JDK, похоже, не очень помогает, когда нужно использовать цвета в другом цветовом пространстве.

Edit: In ColorSpace.getName(idx) there's this little snippet:

 case ColorSpace.TYPE_HLS:
                    compName = new String[] {"Hue", "Lightness", 
                                             "Saturation"};

so it was what you thought, but looking at the type hierarchy of ColorSpace it seems not to be used or implemented in any way anywhere. ColorSpace расширяется только двумя другими классами BogusColorSpace и ICC_ColorSpace, так что я предполагаю, что они ожидают, что разработчики создадут свои собственные реализации для различных цветовых пространств.

1
ответ дан 30 November 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: