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 Forms Discussion :

dragdrop lecture exif sur importation firefox


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut dragdrop lecture exif sur importation firefox
    Bonjour,

    J'ai un souci que j'arrive pas à résoudre.
    J'ai fait une petite appli pour lire les exif des images que je vois sur le net avec IE, et je rencontre aucun souci mais avec firefox je n'y arrive pas, je ne comprends pas pourquoi, j'arrive pas à avoir de doc sur ça. le dragdrop fonctionne bien et j'ai l'image en mémoire mais je n'arrive pas à lire les EXIF contrairement à IE ou tout se passe nickel.
    si vous avez une solution ou une orientation pour trouver la solution.

    je pourrais si vous voulez mettre des lignes de code pour vous montrer mon travail.
    Merci par avant pour le temps que vous m'avez consacré sinon.
    bonne journée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il faudrait que tu donnes un peu plus de détails... comment fonctionne ton appli ? Tu drag l'image du navigateur vers l'application ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    oui donc je drag une image du navigateur IE ou Firefox pour l'affiché dans mon Form avec les EXIF et avec IE il y a pas de souci le le PictureBox prend bien la photo et le Textbox lui affiche les info EXIF sauf qu'avec Firefox je n'arrive pas à lire les Exif, elle ne s'affiche pas dans le TextBox.

    Voici le debut du code qui fonctionne tres bien dans IE :

    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
    75
    76
    77
    78
    79
    80
    81
    82
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Text;
    using System.Windows.Forms;
    using System.Globalization;
     
    namespace AffExif
    {
        public partial class Form1 : Form
        {
            //private Image picture;
            //private Point pictureLocation;
     
            public Form1()
            {
                InitializeComponent();
                pictureBox1.AllowDrop = true;
                pictureBox1.DragDrop += new DragEventHandler(this.Form1_DragDrop);
                pictureBox1.DragEnter += new DragEventHandler(this.Form1_DragEnter);
                //this.pictureBox1.LoadAsync(Form1_DragEnter);
     
            }
     
            private void Form1_DragDrop(object sender, DragEventArgs e)
            {
                // Handle FileDrop data.
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    // Assign the file names to a string array, in 
                    // case the user has selected multiple files.
                    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                    try
                    {
                        // Assign the first image to the picture variable.
                        this.pictureBox1.ImageLocation = files[0];
                        // Set the picture location equal to the drop point.
                        this.pictureBox1.Load();
                        Afficher(files[0]);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        return;
                    }
                }
            }
            private void Afficher(string aFichier)
            {
                textBox1.Clear();
     
                Image wImage = new Bitmap(aFichier);
     
                int wCount = 0;
                foreach (PropertyItem wItem in wImage.PropertyItems)
                {
                    switch (String.Format("{0:X08}", wItem.Id))
                    {
                        case "0000010F":
                            textBox1.AppendText("Fabriquant APN : " + ExifStringConver(wItem.Value, wItem.Len));
                            textBox1.AppendText(Environment.NewLine);
                            break;
     
                        case "00000110":
                            textBox1.AppendText("Nom APN : " + ExifStringConver(wItem.Value, wItem.Len));
                            textBox1.AppendText(Environment.NewLine);
                            break;
     
                        case "00000132":
                            try
                            {
                                textBox1.AppendText("Date : " + ExifStringDateTimeToStringDateTime(ExifStringConver(wItem.Value, wItem.Len - 1)));
                                textBox1.AppendText(Environment.NewLine);
                            }
                            catch (Exception e)
                            {
                                //MessageBox.Show("Erreur dans la lecteur de la Date");
                            }
                            break;
    et etc...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bizarre, je vois pas ce que ça change pourtant... tu as testé avec les mêmes photos ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    oui j'ai testé avec les mêmes photos de IE et Firefox mais pas moyen de voir les Exif avec Firefox mais si je copie le fichier image que j'ai sur Firefox sur le disque dur en physique et que je veux afficher les Exif là sa passe tres bien donc je me dis que je pourrai contourner le problème en copiant le Fichier photo sur disque dur et de l'effacer à chaque fois au lieu de l'avoir en mémoire. J'aime pas trop cette solution donc si vous en voyez une autre ;-)

    Mais bon j'aurai préféré et préfère pouvoir lire les EXIF comme avec IE.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    re-Bonjour,

    donc j'ai fais encore pas mal de test et le souci que j'ai s'est que :
    avec IE en draganddrop il va copier le fichier dans le dossier "temp" avec la photo en JPG.
    mais avec Firefox il va faire la même chose mais en copiant la photo en BMP et un nom différent de l'image. donc avec Firefox je perds les Exif par sa façon de copier en draganddrop.

    Le test a été fais avec le même site internet et la même photo.

    Personne à une solution pour ce problème ? car là je suis bloqué avec Firefox et le draganddrop.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    donc quand je glisse une photo de firefox sur le bureau ou dossier la photo reste en jpg avec les Exif mais quand je glisse sur l'appli C# elle est en bmp.

    rude rude.

    si vous avez des idées ?

    merci à vous.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    J'ai fait le test, effectivement le format FileDrop contient le chemin d'un bmp temporaire... bizarre que ça marche comme ça.

    Par contre, le DataObject contient aussi d'autres formats, notamment l'image elle-même (sous forme de MemoryStream), ou encore son URI. Tu pourrais utiliser ça au lieu du FileDrop... Mais à mon avis le plus simple est encore d'utiliser la méthode GetImage du DataObject

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci à vous,

    Je vais essayer la méthode GetImage du DataObject voir ce que sa va donner.

    merci à vous pour votre aide, à bientôt.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous,

    Tomlev ou autre je ne voudrais pas prendre plus de votre temps pour m'aider mais je rencontre un petit souci.

    Pouvez-vous me mettre un exemple pour réussir à faire un drag and drop avec GetImage du DataObject car j'ai bien compris le pourquoi mais j'ai du mal à l'utiliser. :-( il est vrai que je suis un peu rouillé dans la prog depuis le temps que j'en avais pas fait.

    Je vous remercie déjà pour le temps consacré à mon souci.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bon, en fait j'ai dit une bêtise...

    Déjà la méthode GetImage n'est pas directement visible sur e.Data, parce qu'elle est définie dans la classe DataObject mais pas dans l'interface IDataObject. Donc on peut y accéder en faisant un cast de e.Data en DataObject, mais de toutes façons ça ne fonctionne pas... je sais pas trop pourquoi.


    En plus les URI directement accessibles dans le DataObject ne sont pas celle de l'image mais celle du lien

    Par contre, l'URI de l'image est accessible, mais pas directement : elle est dans un MemoryStream encodé en Unicode. Voilà un truc qui semble fonctionner pour un drag/drop d'image à partir de Firefox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                const string mozUrlFormat = "application/x-moz-file-promise-url";
                if (e.Data.GetDataPresent(mozUrlFormat))
                {
                    MemoryStream ms = (MemoryStream)e.Data.GetData(mozUrlFormat);
                    string uri = Encoding.Unicode.GetString(ms.ToArray()).TrimEnd('\0');
                    WebClient wc = new WebClient();
                    using (var stream = wc.OpenRead(uri))
                    {
                        pictureBox1.Image = Image.FromStream(stream);
                    }
                }
    Evidemment c'est du spécifique Firefox, ça ne fonctionnera pas pour IE...

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous,

    Merci Tomlev, avec ce que tu as fait s'est cool je pense que maintenant j'ai moyen de me débrouiller.
    tu m'as enlevé une grosse épine du pied.
    Merci pour ton aide.

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    n'oublie pas le bouton alors

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous,

    donc juste confirmation que avec ce que tu m'as donnée Tomlev, tout est nickel et j'ai réussi à trouver une bonne solution pour lire les Exif des photos venant de IE et de Firefox sans aucun souci.

    Vraiment merci beaucoup pour ton aide Tomlev.

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

Discussions similaires

  1. Lecture de buffer important sur la fonction Recv
    Par Fooshi dans le forum Réseau
    Réponses: 1
    Dernier message: 31/07/2010, 22h20
  2. Pas de son en lecture video sur Firefox
    Par crinblanc33 dans le forum Windows XP
    Réponses: 7
    Dernier message: 28/11/2009, 21h37
  3. lecture & ecriture sur le port serie
    Par anouar dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 08/07/2005, 17h15
  4. Précisions sur Import/export
    Par electro dans le forum Import/Export
    Réponses: 9
    Dernier message: 15/10/2004, 13h34
  5. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00

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