Como descobrir se uma cor hexadecimal é escura ou clara?

Para determinar se uma cor hexadecimal é escura ou clara, você pode usar a fórmula de Percepção da Luminosidade (YIQ). Essa fórmula é baseada em como os olhos humanos percebem cores.

A fórmula YIQ converte uma cor RGB (Red-Green-Blue) em uma representação de luminosidade chamada Y. A luminosidade varia de 0 a 1, onde 0 é preto e 1 é branco. Valores entre 0 e 0,5 são considerados cores escuras, enquanto valores acima de 0,5 são considerados cores claras.

Aqui está um exemplo em Python de como você pode implementar isso:

def is_color_dark(hex_color):
    # Converte a cor hexadecimal para RGB
    r = int(hex_color[1:3], 16)
    g = int(hex_color[3:5], 16)
    b = int(hex_color[5:7], 16)

    # Calcula a luminosidade usando a fórmula YIQ
    y = (r * 299 + g * 587 + b * 114) / 1000

    # Verifica se a cor é escura ou clara
    if y <= 0.5:
        return True
    else:
        return False

# Exemplo de uso
color1 = "#000000" # Preto - considerado escuro
color2 = "#FFFFFF" # Branco - considerado claro
color3 = "#808080" # Cinza médio - considerado claro

print(is_color_dark(color1)) # True
print(is_color_dark(color2)) # False
print(is_color_dark(color3)) # False

Neste exemplo, a função is_color_dark recebe a cor hexadecimal como um argumento e retorna True se for uma cor escura e False se for uma cor clara.