Я создаю библиотеку, которая позволяет преобразовывать следующие цветовые пространства:
HSV, HLS, RGB, CMYK, HEX
До сих пор у меня реализованы следующие преобразования:
HSV -> HLS
HSV -> RGB
HSV -> CMYK (HSV -> RGB -> CMYK :: см. Примечание)
RGB -> HSV
RGB -> HLS
RGB -> CMYK
RGB -> HEX
HLS -> RGB
HLS -> HSV
HLS -> CMYK (HLS -> RGB -> CMYK :: см. Примечание)
CMYK -> RGB
CMYK -> HSV (CMYK -> RGB -> HSV :: см. Примечание)
CMYK -> HLS (CMYK -> RGB -> HLS :: см. Примечание)
Примечание: HSV и HSL нельзя напрямую преобразовать в CMYK, поскольку они не являются абсолютными цветовыми пространствами. Им нужны элементы пространства RGB, чтобы преобразование в CMYK имело смысл. ( CMYK цвет к HSV цвет напрямую )
Сейчас я должен реализовать все преобразования HEX:
HEX <-> RGB
HEX <-> HSV
HEX <-> HLS
HEX <-> CMYK
Преобразование между HEX и RGB просто, и я его реализовал. Что меня беспокоит, так это преобразования HEX <-> HSV и HEX <-> HLS. Существует ли прямой способ преобразования HEX в HSV и HSL или мне нужно использовать HEX -> RGB -> HSV / HLS? А как насчет HEX <-> CMYK?
Любая помощь будет принята с благодарностью.