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

C# Discussion :

[ASP.NET/C#] Algorithme Colorimétrique


Sujet :

C#

  1. #1
    oxa
    oxa est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 39
    Par défaut [ASP.NET/C#] Algorithme Colorimétrique
    Bonjour,
    je suis entrain de coder un outil permettant de modifier la teinte d'une image sans pour autant modifier les tons.

    Je veux par exemple partir d'une image bleu clair pour arriver à une image rouge clair.

    Je cherche un algorithme me permettant de transformer ces valeurs à la volée.

    J'ai tenté de faire un ratio RVB pour aller du bleu au rouge mais je n'ai pas l'impression que ce soit une science exact puisque je me retrouve avec des valeurs R,V ou B dépassant les 255 en sortie

    Quelqu'une pourrait-il m'aider s'il vous plait?

    Merci,
    Oxa

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Travaille en HSL à la place de RGB !

    Tu pourra faire varier facilement la teinte de ton image.

  3. #3
    oxa
    oxa est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 39
    Par défaut
    Merci pour ta réponse

    J'ai trouvé ca aussi sur wikipedia
    http://fr.wikipedia.org/wiki/Codage_...s#RVB_vers_TSL

    J'essai maintenant de traduire le code en C# mais les résultats ne sont pas probants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    float luminosite = c.GetBrightness()*100;
                            float teinte = c.GetHue();
                            float saturation = c.GetSaturation() * 100;
     
                            float tMax = 240;
                            float lMax = 240;
                            float sMax = 240;
                            float VMax = 255;
     
                            float M = 0;
                            float m = 0;
                            float delta = 0;
     
                            float R = 0;
                            float G = 0;
                            float B = 0;
     
                            float t0 = ((6 * teinte) / tMax);
     
                            if (luminosite <= (lMax / 2))
                            {
                                M = VMax * (luminosite / lMax) * (1 + (saturation / sMax));
                                m = VMax * (luminosite / lMax) * (1 - (saturation / sMax));
                            }
                            else
                            {
                                M = VMax * (((luminosite / lMax) * (1 - (saturation / sMax))) + (saturation / sMax));
                                m = VMax * (((luminosite / lMax) * (1 + (saturation / sMax))) - (saturation / sMax));
                            }
     
                            delta = M - m;
     
                            int i = (Int16)t0;
                            switch (i)
                            {
                                case 0:
                                    R = R;
                                    G = m + (t0 * delta);
                                    B = m;
                                    break;
                                case 1:
                                    R = m + ((2 - t0) * delta);
                                    G = M;
                                    B = m;
                                    break;
                                case 2:
                                    R = m;
                                    G = M;
                                    B = m + ((t0 - 2) * delta);
                                    break;
                                case 3:
                                    R = m;
                                    G = m + ((4 - t0) * delta);
                                    B = M;
                                    break;
                                case 4:
                                    R = m + ((t0 - 4) * delta); ;
                                    G = m;
                                    B = M;
                                    break;
                                case 5:
                                    R = M;
                                    G = m;
                                    B = m + ((6 - t0) * delta);
                                    break;
                            }
                            Color color = Color.FromArgb((Int16)R, (Int16)G, (Int16)B);
    La luminosité et la saturation sont erronées et me donnent des valeurs proches de 0

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    mais pourquoi tu n'utilise pas Color de system.drawing ?

  5. #5
    oxa
    oxa est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 39
    Par défaut
    J'utilise Color de system.drawing mais je n'ai pas trouvé d'outil dans cet assembly qui me permette de traduire tout une palette de couleurs

Discussions similaires

  1. Choisir PHP ou ASP.NET ?
    Par discogarden dans le forum Général Conception Web
    Réponses: 81
    Dernier message: 31/12/2009, 18h11
  2. [CR][ASP.NET] Impression en format "paysage"
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/04/2004, 22h56
  3. [CR][ASP.NET] Problème d'affichage du rapport
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 20/04/2004, 12h39
  4. [CR][ASP.NET] Un champ avec plusieurs polices...
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 08/04/2004, 14h19
  5. Driver postgre pour asp.net
    Par vonbier dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/10/2003, 13h35

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