IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Calculer un bon contraste d'une couleur


Sujet :

Traitement d'images

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Calculer un bon contraste d'une couleur
    Bonjour.

    J'ai une zone de texte. La couleur de l'arrière-plan de cette zone peut être choisie par l'utilisateur. J'aimerais que le texte qui s'y trouve soit toujours lisible, qu'elle que soit la couleur d'arrière-plan. J'aurais donc besoin de pouvoir déterminer une couleur qui contraste bien avec une autre, dont j'ai forcément le code couleur.

    J'ai pas forcément besoin de quelque chose de compliqué, mais d'un résultat acceptable.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Cypselos Voir le message
    J'ai pas forcément besoin de quelque chose de compliqué, mais d'un résultat acceptable.
    Soit R,G,B les 3 composantes de la couleur de fond (entre 0 et 255)

    si ((R+G+B)/3)<128 alors texte=BLANC sinon texte=NOIR

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Soit R,G,B les 3 composantes de la couleur de fond (entre 0 et 255)

    si ((R+G+B)/3)<128 alors texte=BLANC sinon texte=NOIR
    Merci, cela me convient parfaitement.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 136
    Points
    136
    Par défaut
    La perception de chaque couleur de base n'est pas la même :
    Le bleu parait plus sombre que le rouge et le rouge plus sombre que le vert.

    Formule pour calculer le niveau de gris d'une couleur:

    0.11 * B + 0.30 * R + 0.59 * G

    Tu peux utiliser une formule approximative plus simple:

    (B + 2 * R + 4 * G) / 7

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par rebel64 Voir le message
    La perception de chaque couleur de base n'est pas la même :
    Le bleu parait plus sombre que le rouge et le rouge plus sombre que le vert.

    Formule pour calculer le niveau de gris d'une couleur:

    0.11 * B + 0.30 * R + 0.59 * G

    Tu peux utiliser une formule approximative plus simple:

    (B + 2 * R + 4 * G) / 7
    Très intéressant. Merci!

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 76
    Points
    76
    Par défaut J'ai réussi à trouver la formule idéale...
    Bonsoir !
    Au départ je me suis basé sur la formule indiqué ici et qui fonctionnait bien ... sauf pour certaines couleurs. Pour lesquelles le rouge et le vert étaient trop sombre et donnait une couleur de contraste innadaptée.

    Alors j'ai essayé d'appliquer un coef de pondération mais alors là ... il a fallut sortir les aspirines !

    Finalement c'est sur le site du W3c ici que j'ai trouvé la formule idéale.

    Alors pour ceux qui comme moi passerait par ici la voilà :

    SI ((Red value X 299) + (Green value X 587) + (Blue value X 114)) / 1000 < 125 ALORS AFFICHER DU BLANC (#FFF) SINON du NOIR (#000)

    Heirem
    http://heirem.fr

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu peux aussi tenter de toujours écrire dans la couleur complémentaire de celle du fond. Tant que tu n'est pas dans des gris moyens (vu qu'ils sont quasiment leurs propres complémentaire), c'est en général bien lisible.
    Afficher en mode XOR produit également souvent de bons résultats sur un fond uni (c'est nettement plus dégueu sur une image).

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Points : 17
    Points
    17
    Par défaut Merci !
    Citation Envoyé par Heirem Voir le message
    Bonsoir !
    Finalement c'est sur le site du W3c ici que j'ai trouvé la formule idéale.

    Alors pour ceux qui comme moi passerait par ici la voilà :

    SI ((Red value X 299) + (Green value X 587) + (Blue value X 114)) / 1000 < 125 ALORS AFFICHER DU BLANC (#FFF) SINON du NOIR (#000)

    Heirem
    http://heirem.fr
    Cette formule marche comme un charme, merci beaucoup !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Points : 689
    Points
    689
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Soit R,G,B les 3 composantes de la couleur de fond (entre 0 et 255)

    si ((R+G+B)/3)<128 alors texte=BLANC sinon texte=NOIR
    L'algo le plus logique (je trouve) pour maximiser encore plus le contraste serait d'effectuer ceci sur chaque canal couleur (RGB) indépendamment.

    Ainsi :
    if(background.R<128) text.R=255; else text.R=0;
    if(background.G<128) text.G=255; else text.G=0;
    if(background.B<128) text.B=255; else text.B=0;

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    L'algo le plus logique (je trouve) pour maximiser encore plus le contraste serait d'effectuer ceci sur chaque canal couleur (RGB) indépendamment.
    Si tu aimes écrire en Vert sur fond Mauve, effectivement.

    Fond = {255,0,255} ==> Text = {0,255,0}

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Points : 689
    Points
    689
    Par défaut
    Nan je préfère écrire en jaune sur fond bleu !

    Juste pour la forme et le plaisir de donner une autre solution, j'ai donné un algo qui maximise encore plus le contraste... ensuite les goûts et le couleurs...

    Edit : à non en fait c'est faux ce que je dis ! Dans ton cas "vert/mauve" par exemple on se retrouve avec un fond et un texte de luminosité très voisine. Donc mon algo il est nul... et moche !

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Edit : à non en fait c'est faux ce que je dis ! Dans ton cas "vert/mauve" par exemple on se retrouve avec un fond et un texte de luminosité très voisine. Donc mon algo il est nul... et moche !
    Quand on parle de "contraste", on fait effectivement référence aux variations d'intensité lumineuse. D'où le fait que dans les posts précédents nous proposons tous des formules à base de calcul de luminosité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul de contraste d'une image : référence biblio ?
    Par neF4ST dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 20/06/2011, 11h15
  2. Affecter une couleur à un contrôle placé dans une feuille de calculs
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2008, 19h22
  3. Sauvegarder une couleur dans un champ Alphanum
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 11h21
  4. Réponses: 1
    Dernier message: 23/02/2003, 06h22
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo