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 :

Programmer un effet de relief sur une image


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Par défaut Programmer un effet de relief sur une image
    Bonjour.
    J'ai modifié une fonction déjà existante sur le net pour l'adapter à mon programme.
    Mon but était de donner du relief à une image.
    Voici la fonction en question :

    Code c : 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
    68
    69
    70
    71
    72
    73
    74
    image image_filter_rect_aux2 (image* I, int x1, int y1, int x2, int y2, int* K, int kCols, int kRows, int divisor)
    {
     
     int kCenterX = kCols / 2;
     int kCenterY = kRows / 2;
     int i, j, m, mm, n, nn, ii, jj;
     
     image J = image_create ((*I)->w, (*I)->h, 0xffffffff);
     
     
     for(j = y1 + 1 ; j < y2 - 1  ; j++)            
     {
        for(i = x1  + 1; i < x2 - 1 ; i++)         
        {
     
         byte r=0;
         byte g=0;
         byte b=0;
     
            for(m=0; m < kRows; m++)    
            {
                mm = kRows - 1 - m;      
     
                for(n=0; n < kCols; n++) 
                {
     
     
                    ii = i + (m - kCenterX);/*changer le i + et le j + en i - et en j - pour changer impression de relief*/
                    jj = j - (n - kCenterY);
                    if( ii >= 0 && ii < (*I)->w && jj >= 0 && jj < (*I)->h )
                     {
                       byte rr, gg, bb;
     
                       nn = kCols + 1 + n;
     
                       colour_get_rgb ((*I)->pixel [jj * (*I)->w + ii]  , &rr, &gg, &bb);  
     
                       r += (rr * (K[mm * kRows + nn])) / divisor ;
                       g += (gg * (K[mm * kRows + nn])) / divisor;
                       b += (bb * (K[mm * kRows + nn])) / divisor;
     
                       image_putpixel (J, i, j, make_colour(r, g, b, 0xff));
     
                     }   
                }
            }
        }
     }
     
    for (j = 0; j < J->h; j++)
     {
      for (i = 0; i < J->w; i++)
       {
        byte a, b, c;
        colour_get_rgb (J->pixel[j * J->w + i], &a, &b, &c);
        J->pixel[j * J->w + i] = make_colour (255-a, 255-b, 255-c, 0xff);
       }
     }
     
    /*
    for (j = 0; j < J->h; j++)
     {
      for (i = 0; i < J->w; i++)
       {
        byte a, b, c;
        colour_get_rgb (J->pixel[j * J->w + i], &a, &b, &c);
        if (J->pixel[j * J->w + i] == 0xffffffff)
         J->pixel[j * J->w + i] = make_colour (180, 180, 180, 0xff);
       }
     }
    */
     
     return J;
    }


    Quand je compare mon image (la première) à celle obtenue avec The Gimp (la seconde image), Je préfère le résultat obtenu avec The Gimp (ah bon? ça alors, c'est étonnant...)

    Voici ma question : Avec The Gimp, pour obtenir cet effet, on va dans Filtres => Distorsions => relief.

    Une fois là, on le choix de modifier : Azimut, Elevation, Profondeur. (il y a ausi le choix entre carte de relief et relief).

    Savez vous comment il serait possible de modifier la fonction que j'utilise pour paramétrer l'elevation, la profondeur et l'Azimut svp? ( + carte de relief et relief : quelle est la signification de tous ces termes?).

    De plus, quelle est la méthode pour "lisser" l'image et ne pas se retrouver, comme moi, avec des pixels tout pourris?

    Merci d'avance.

    image 1 (moi), image 2 (The Gimp )
    Images attachées Images attachées   

Discussions similaires

  1. Comment réaliser cet effet de texte sur une image ?
    Par creale10 dans le forum jQuery
    Réponses: 4
    Dernier message: 25/07/2012, 13h28
  2. Effet de couleur sur une image
    Par icesiiik dans le forum JavaFX
    Réponses: 1
    Dernier message: 26/04/2011, 01h42
  3. [Article] Appliquer un effet de zoom sur une image avec les CSS
    Par Bovino dans le forum Publications (X)HTML et CSS
    Réponses: 1
    Dernier message: 17/10/2010, 07h53
  4. Appliquer un effet de zoom sur une image avec les CSS
    Par Kerod dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 17/10/2010, 07h53
  5. problème avec un rollover (effet de survol) sur une image/bouton
    Par f56bre dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/03/2007, 14h10

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