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

Windows Presentation Foundation Discussion :

WPF et image


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut WPF et image
    Bonjour,

    je souhaite réalisé une application de traitements des images.

    Pour cela je souhaite faire une interface en WPF affichant une image et permettant de la sauvegarder et une partie traitement en C++.

    Pour ma partie interface je cherche depuis plus d'une semaine comment réaliser les fonctions suivantes: ouverture, sauvegarde, zoom et transfer vers un buffer de unsigned long ou char (enciennement getpixel ou setpixel).

    Pour le moment, je me suis mélanger entre Image.source, bitmapsource,et bitmapframe.

    J'ai inserer dans mon interface une image dans le fichier xaml. Maintenant, j'ai un problème comment gérer cette image pour réaliser mes fonctions citées plus haut ?

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Points : 341
    Points
    341
    Par défaut
    Je ne peux pas te répondre en détail mais ta question me fait penser à la classe WriteableBitmap. Essaye de regarder de ce côté là :-)
    www.japf.fr mon blog sur WPF et .Net

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    J'ai pour le moment régler les fonctions de zooms en utilisant directement la class image.

    Pour ma fonction ouvrir, j'ai pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
                dlg.Filter = "Tous les fichiers images|*.bmp;*.jpg;*.gif;*.png|Bitmap Windows ou OS/2(*.bmp)|*.bmp|Format JPEG(*.jpg)|*.jpg|Format GIF(*.gif)|*.gif|Portable Network Graphic(*.png)|*.png";
                dlg.DefaultExt = ".bmp";
                Nullable<bool> result = dlg.ShowDialog();
                if (result == true) 
                {
                    string filename = dlg.FileName;
                    BitmapImage myImageStream = new BitmapImage();
                    myImageStream.BeginInit();
                    myImageStream.StreamSource = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
                    myImageStream.EndInit();
                    IVSImage.Source = myImageStream;
                }
    Je cherche comment sauvegarder l'image.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Points : 341
    Points
    341
    Par défaut
    Tu peux regarder du côté de la classe JpefBitmapEncoder qui te permet de sauvegarder ton image en JPEG (regarde la partie exemple de ce lien pour voir comment faire au niveau du code). Il existe d'autre encodeurs pour sauvegarder en PNG, BMP...
    www.japf.fr mon blog sur WPF et .Net

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci pour ces information Jérem22

    ma fonction sauvegarde ressemble à:

    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
                Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
                dlg.DefaultExt = ".bmp";
                dlg.Filter = "Bitmap Windows ou OS/2(*.bmp)|*.bmp|Format JPEG(*.jpg)|*.jpg|Format GIF(*.gif)|*.gif|Portable Network Graphic(*.png)|*.png";
                Nullable<bool> result = dlg.ShowDialog();
                if (result == true)
                {
                    string filename = dlg.FileName;
                    FileStream stream = new FileStream(filename, FileMode.Create);
                    RenderTargetBitmap rtb = new RenderTargetBitmap((int)IVSImage.Source.Width, (int)IVSImage.Source.Height, 96, 96, PixelFormats.Pbgra32);
                    rtb.Render(IVSImage);
                    JpegBitmapEncoder bmpencoder = new JpegBitmapEncoder();
                    bmpencoder.Frames.Add(BitmapFrame.Create(rtb));
                    bmpencoder.Save(stream);
                    stream.Close();
                }
    Il me reste deux chose à régler la première la taille de l'image recopier ne correspond pas à l'original j'ai un facteur constant entre les 2 images.
    Les propriétés de l'image affiche une taille nulles ( ce qui est érronnés)

    Comment corrigés ce problème ?

    Comment reconnaitre l'extension à partir de la boite de dialogue ?

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par titou45 Voir le message
    Comment reconnaitre l'extension à partir de la boite de dialogue ?
    A partir de dlg.FileName, tu peux utiliser la méthode GetExtension pour connaitre l'extension.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Je ne peux pas utiliser getextension par j'ai une erreur de compilation signalant que getexension est inexistant.

    je fais comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                    if (filename.EndsWith("bmp"))
                    {
                        RenderTargetBitmap rtb = new RenderTargetBitmap((int)IVSImage.Source.Width, (int)IVSImage.Source.Height, 96, 96, PixelFormats.Pbgra32);
                        rtb.Render(IVSImage);
                        BmpBitmapEncoder bmpencoder = new BmpBitmapEncoder();
                        bmpencoder.Frames.Add(BitmapFrame.Create(rtb));
                        bmpencoder.Save(stream);
                        stream.Close();
                    }
    Cependant, il me reste des erreurs au niveau du rendertargetbitmap, je n'ai pas la bonne taille, et j'ai un problème d'encodage des données.

    Je voudrai savoir comment récupérer également le format d'encodage de l'image ( RGB24, indexed8,...) à partir de Image.source si cela est possible.

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci pour ces informations.

    J'ai besoin de savoir comment est l'image RGB, en niveau de gris, ou binaire afin de pouvoir la charger dans un buffer pour faire des traitements.

    Je pense utiliser copypixel et writepixel pour passer les données du array int32 dans mon buffer.

    J'utilise des classe C++ pour réaliser mes traitements. Je possède une classe pour gérer les images RGB (3*8 bits par pixel), une pour pour les images en niveau de gris (Sur 8 bits par pixel).

    Je voudrai savoir comment connaitre le format de codage.

    J'ai encore une erreur au niveau de l'ouverture au format jpeg.

    Je continue de chercher de mon coté...

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Citation Envoyé par titou45
    J'ai besoin de savoir comment est l'image RGB, en niveau de gris, ou binaire
    Comme ça j'ai envie de dire que ce doit être défini dans l'entête de l'image. Chaque format (Bmp,Png, etc.) possède une entête dans laquelle on trouve ces informations.

    Après est-ce que le framework .net permet de récupérer ces informations simplement je ne sais pas. Par contre, il existe le logiciel Paint.Net dont le code source est accessible ici. Je ne l'ai pas regardé mais je pense que ça peut être sympa de voir comment c'est fait .


    [Edit] Le logiciel n'est apparemment plus open source comme il l'était (il me semble) : http://fr.wikipedia.org/wiki/Paint.NET#Licence. C'est assez surprenant... et dommageable... Menfin...

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    bon sur cet article tu as tout ce que tu veux lol
    ou presque
    http://www.codeproject.com/KB/WPF/Im...harpening.aspx
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Tout d'abord merci pour vos conseils et informations cela m'a été très utile pour comprendre.

    je vais ouvrir mes image avec mes classes habituelles en C++ puis une fois les traitements réalisés je la transforme en writeablebitmap pour l'afficher, Cela va me permettre d'utiliser directement mes codes qui tournent actuellement en console win32.

    Cependant, cela va m'obliger à utiliser seulement des bmp.

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

Discussions similaires

  1. [WPF] Binding Image de base de données
    Par DotNET74 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 02/08/2010, 06h56
  2. [WPF / WCF] Image pas net
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 02/06/2010, 13h05
  3. wpf Background Image
    Par Agnès22 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 24/11/2009, 13h17
  4. [WPF] Ajouter image dans treeview xaml
    Par chris81 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 04/02/2008, 10h06
  5. [3.0][WPF][C#] Images vectorielles
    Par psyclik dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 16/11/2006, 10h21

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