Короткий ответ - в используемой вами библиотеке кода есть ошибки.
И вроде бы не поддерживается активно.
FWIW, когда вы смотрите на ценности, помните, что:
#000
sRGB 0,0,0 = linearRGB 0,0,0.0,0.0 = XYZ 0,0,0 = Lab 0,0,0
(Все пробелы 0,0,0)
#FFF
sRGB 255,255,255 = linearRGB 1.0,1.0,1.0 = XYZ 0.9505,1.0,1.0888 = Lab 100,0,0
(sRGB - D65, это предполагает наблюдатель D65 2 °)
#777
sRGB 119,119,119 = linearRGB 0,1845,0,1845,0,1845 = XYZ 0,1753,0,1845,0.2009 = Lab 50,03,0,0
(с использованием матрицы BruceLindbloom)
Псевдокод
Более правильный код можно найти здесь:
https://www.easyrgb.com/en/math.php
Однако этот код НЕ является javascript - код на этом сайте является псевдокодом, поэтому его необходимо изменить (т.е. вам нужно использовать Math.pow, а не ^)
Python
Здесь есть хорошая библиотека на основе Python, и она активно поддерживается:
https://github.com/colour-science/colour
МАТЕМАТИКА
Фактические расчеты и обсуждение можно найти на сайте Брюса Линдблума:
http://www.brucelindbloom.com/index.html?Math.html
У него также есть несколько цветных калькуляторов на языке JS, которые могут быть вам полезны.
Рад ответить на другие вопросы, дай мне знать ...
person
Myndex
schedule
28.12.2019