Я бы сказал, что вы можете сначала преобразовать цвет в оттенки серого, а затем проверить, ближе ли он к черному или белому.
Сначала преобразуйте значение цвета RGB для вычисления яркости по следующей формуле
Y = 0.2126*R + 0.7152*G + 0.0722*B
Затем проверьте, ближе ли значение к 0 или к 255, и выберите черный или белый соответственно.
color c = Y < 128 ? black : white
Имейте в виду, что это работает хорошо, если цветовое пространство не сжато гаммой, в противном случае у вас будетЧтобы добавить шаг перед вычислением яркости, которая является гамма-расширением , вычислите Y, затем выполните гамма-сжатие , чтобы получить нелинейное значение яркости, которое затем можно использовать для определения,цвет ближе к черному или белому.