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

MFC Discussion :

Modifier une image par pixels


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Modifier une image par pixels
    Bonjour,
    J'aurais aimé modifier une image JPG pixels par pixels sous visual.NET, le but de la manoeuvre étant de mettre le pixel en blanc ou en noir selon sa couleur actuelle. On se retrouverait donc avec une image en 2 couleurs.
    Quelles sont les commandes et les librairies à utiliser :

  2. #2
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Pour le JPEG tu sera obliger de le décompresser en BMP.
    Ensuite pour modifier les pixels un des moyens le plus rapide (a mon avis - ça peut être sujet à débat!!!) c'est de travailler avec un pointeur sur ton buffer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //ou ImgBuff  est le début de ton buffer d'image
    //    Bpl est le nombre de Byte Par Ligne
    //    Bpp est le nombre de Byte Par Pixel
    //    et bien sur X et Y sont les coordoonées de ton pixel à modifier
     
    BYTE * pPixel =  ImgBuff+Bpl* Y + bpp * X;
    Qui va piano va sano...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Merci pour la réponse, mais je ne m'y connais pas encore très bien en C++. pourrais-tu m'indiquer un démarche plus détaillée pour réaliser une telle application ?

  4. #4
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Ben il te faut tout t'abord décompresser ton JPG.
    Sous forme d'un Buffer de Pixel (ImgBuff).

    Si tu veut pas utiliser CxImage tu peut utiliser la JpegLib (utilisée par CxImage) pour accéder à ton image Ligne par Ligne

    Je te prend en exemple une image 24 bpp soit 24 Bits par pixels soit 3 Bytes par pixel, un pour le Red, un pour le Green, et un pour le Blue:

    Donc tu à en mémoire une sutructure comme suit

    Pixel n° :
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    RGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBRGBR....

    Le problème c'est que tu à sous forme d'un tableau à une dimension (buffer de pixel) une image qui elle en à deux, c'est là seule difficulté de compréhension à mon avis.
    Tu peut éventuellement faire un Tableau en 2D avec un structure ligne par ligne qui est souvent utilisé car cela correspond plus à la représentation d'une image...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ScanLines[0] <-> RGBRGBRGBRGBRGB
    ScanLines[1] <-> RGBRGBRGBRGBRGB
    ...
    ScanLines[n] <-> RGBRGBRGBRGBRGB
    Tu peut Même faire un tableau : RGBTRIPLE Img[Height][Width], pour accéder à tes pixels.
    à vrai dire si tu débute je te conseille les tableaux parce que ça colle plus à la représentation d'un image...

    Si t'as besoin de plus d'info, dis le....
    Qui va piano va sano...

  5. #5
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Cela dit sous .Net le GDI doit de décompresser le JPEG en HBITMAP (BGR), donc pour ta rotation, il suffit d'utiliser le lien que je t'avais mis dans un post précédent.
    Qui va piano va sano...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Super, je vais enfin pouvoir avancer ! Merci beaucoup !

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    jette un oeil a ce post sur codeguru au cas ou :
    http://www.codeguru.com/Cpp/G-M/bitmap/specialeffects/article.php/c1747/

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Encore une question (j'espere que ce sera la dernière ) : tous les fichiers LibJPeg que je trouve sont des .c ; est-ce je pourrais quand même les utiliser pour programmer en C++ ? Sinon, ou pourrais-je trouver des .cpp ?

  9. #9
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Tu peut très bien les utilisé en C++ car les fonction ont dans leur en-tête (si je me souviens bien) ou un truc du genre qui précise au compilo que c'est du C.
    Qui va piano va sano...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    ok et encore merci pour tout

  11. #11
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    de rien
    Qui va piano va sano...

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

Discussions similaires

  1. filtrer une image par rapport aux pixels foncés
    Par ekica dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 30/03/2013, 20h27
  2. Réponses: 18
    Dernier message: 28/02/2013, 16h59
  3. gestion des pixels d'une image par python.
    Par pierre-y dans le forum Général Python
    Réponses: 16
    Dernier message: 29/11/2012, 22h09
  4. [PPT-2003] Modifier une image par Access
    Par Deustalos dans le forum VBA PowerPoint
    Réponses: 9
    Dernier message: 17/02/2010, 10h01
  5. Modifier l'image par défaut d'une JOptionPane
    Par Balbuzard dans le forum Débuter
    Réponses: 1
    Dernier message: 14/09/2008, 23h48

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