Avaliar se um valor HEX é escuro ou claro

O usuário do aplicativo da Web do ASP.NET que estou criando pode selecionar cores para uso em alguns dos elementos (por exemplo, botões / títulos) para facilitar algum grau de personalização.

O problema é que, por padrão, o texto nessas camadas é preto ... o que eu estou tentando fazer é avaliar o valor HEX escolhido pelo usuário através de um selecionador, e alternar entre texto preto e branco programaticamente - isso pode ser em JavaScript, ou no código por trás.

O cerne do problema é que eu não tenho certeza de como avaliar o HEX para decidir se a proximidade da cor escolhida para preto está muito próxima para usar texto preto.

Alguma ideia?

questionAnswers(4)

yourAnswerToTheQuestion