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 :

Lecture de donnée exif


Sujet :

Windows Forms

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut Lecture de donnée exif
    Bonjour à tous,
    je développe une application dans laquelle je stock des images dans ma base.
    Je souhaiterais lire et extraire les données EXIF et les stoker dans une table de ma base. Alors comment peut on lire ces donnée en C#?

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    La librairie EXIFextractor devrait répondre à ta problématique
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    Je vous fait un retour sous peu

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The type or namespace name 'Goheer' could not be found (are you missing a using directive or an assembly reference?)
    alors que j'ai bien importé la reférence et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    using Goheer;
    using Goheer.EXIF;

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    Une solution?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est bizarre Tu développes avec quelle version du framework ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Je vois que tu as mis les directives Using ... Très bien.

    Mais as tu rajouté la librairie dans les références de ton projet ?
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    Bonjour à tous,
    infosam76, j'ai bel et bien rajouté la librairie dans les références de ton projet!

    la version de mon framework est 4.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    en m'appuyant sur le topique ici j'ai utiliser exiftool de la manière suivante:
    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
    public string[] CmdLineApplication(string exePath, string Arguments = "")
            {
                Process Proc = new  Process();
                Proc.StartInfo.FileName = exePath;
                Proc.StartInfo.Arguments = Arguments;
                Proc.StartInfo.UseShellExecute = false;
                Proc.StartInfo.RedirectStandardOutput = true;
                Proc.StartInfo.CreateNoWindow = true;
                Proc.Start();
                string cmdOutPut = Proc.StandardOutput.ReadToEnd();
                Proc.WaitForExit();
                char[] mVblf="\n".ToCharArray();
                string[] cmdOutPuts = cmdOutPut.Split(mVblf);
                return cmdOutPuts;
            }
    textBox1=textBox1.Lines = CmdLineApplication(Application.StartupPath.ToString()+"\\"+"exiftool(-k).exe", "C:\\exiftollexe\\20130920_071339.jpg");
    Les infos s'affichent correctement dans le textBox
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
     
    ExifTool Version Number         : 9.37
     
    File Name                       : 20130920_071339.jpg
     
    Directory                       : C:/exiftollexe
     
    File Size                       : 84 kB
     
    File Modification Date/Time     : 2013:09:20 07:55:57+00:00
     
    File Access Date/Time           : 2013:09:25 10:00:24+00:00
     
    File Creation Date/Time         : 2013:09:25 10:00:24+00:00
     
    File Permissions                : rw-rw-rw-
     
    File Type                       : JPEG
     
    MIME Type                       : image/jpeg
     
    JFIF Version                    : 1.01
     
    Resolution Unit                 : inches
     
    X Resolution                    : 72
     
    Y Resolution                    : 72
     
    Exif Byte Order                 : Big-endian (Motorola, MM)
     
    Make                            : SAMSUNG
     
    Camera Model Name               : GT-I9300
     
    Orientation                     : Horizontal (normal)
     
    Software                        : Microsoft Windows Photo Viewer 6.1.7600.16385
     
    Modify Date                     : 2013:09:20 07:51:20
     
    Y Cb Cr Positioning             : Centered
     
    Exposure Time                   : 1/100
     
    F Number                        : 2.6
     
    Exposure Program                : Aperture-priority AE
     
    ISO                             : 100
     
    Exif Version                    : 0220
     
    Date/Time Original              : 2013:09:20 07:13:39
     
    Create Date                     : 2013:09:20 07:13:39
     
    Components Configuration        : Y, Cb, Cr, -
     
    Shutter Speed Value             : 1/100
     
    Aperture Value                  : 2.6
     
    Brightness Value                : 4.63671875
     
    Exposure Compensation           : 0
     
    Max Aperture Value              : 2.6
     
    Metering Mode                   : Center-weighted average
     
    Flash                           : No Flash
     
    Focal Length                    : 3.7 mm
     
    Maker Note Version              : 0100
     
    Warning                         : Invalid EXIF text encoding
     
    User Comment                    :
    ...
     
    Sub Sec Time Original           : 00
     
    Sub Sec Time Digitized          : 00
     
    Flashpix Version                : 0100
     
    Color Space                     : sRGB
     
    Exif Image Width                : 3264
     
    Exif Image Height               : 2448
     
    Exposure Mode                   : Auto
     
    White Balance                   : Auto
     
    Scene Capture Type              : Standard
     
    Image Unique ID                 : ZDFI02
     
    GPS Version ID                  : ..
     
    GPS Latitude Ref                : North
     
    GPS Longitude Ref               : West
     
    GPS Altitude Ref                : Above Sea Level
     
    GPS Time Stamp                  : 07:13:21
     
    GPS Processing Method           : 
     
    GPS Date Stamp                  : 2013:09:20
     
    Padding                         : (Binary data 2060 bytes, use -b option to extract)
     
    Offset Schema                   : 60
     
    About                           : uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b
     
    Creator Tool                    : Microsoft Windows Photo Viewer 6.1.7600.16385
     
    Image Width                     : 640
     
    Image Height                    : 480
     
    Encoding Process                : Baseline DCT, Huffman coding
     
    Bits Per Sample                 : 8
     
    Color Components                : 3
     
    Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
     
    Aperture                        : 2.6
     
    GPS Altitude                    : 122 m Above Sea Level
     
    GPS Date/Time                   : 2013:09:20 07:13:21Z
     
    GPS Latitude                    : 5 deg 23' 9.00" N
     
    GPS Longitude                   : 4 deg 1' 17.00" W
     
    GPS Position                    : 5 deg 23' 9.00" N, 4 deg 1' 17.00" W
     
    Image Size                      : 640x480
     
    Shutter Speed                   : 1/100
     
    Create Date                     : 2013:09:20 07:13:39.00
     
    Date/Time Original              : 2013:09:20 07:13:39.00
     
    Focal Length                    : 3.7 mm
     
    Light Value                     : 9.4
    Comment récupérer exactement l'information qui m'interesse? Ici je souhaite récupérer Longitude, Latitude et Position pour les stoker dans ma base.

    Merci d'avance.

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est une solution mais tu vas tout récupérer à chaque fois. Est-ce que tu as récupéré les sources du projet ? Ou bien le projet de démo seulement ?

    Si tu veux pouvoir choisir, il vaut mieux récupérer les sources et recompiler la DLL. Ensuite tu remets la référence dans ton projet vers la DLL, tu remets les using, et ça devrait marcher. Je pense que tu as dû rater quelque chose, j'ai testé chez moi et ça marche nickel.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  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
    Citation Envoyé par Le gris Voir le message
    Ici je souhaite récupérer Longitude, Latitude et Position pour les stoker dans ma base.
    C'est un peu redondant, non ? Vu que la position contient la latitude et la longitude

    Soit dit en passant, pas besoin d'utiliser une librairie spécifique pour lire la position ; tu peux le faire directement avec le .NET Framework. Voilà une méthode d'extension qui lit la position d'une image :

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    using System.Drawing;
    using System.Drawing.Imaging;
     
    public static class ExifExtensions
    {
        static string ReadExifString(this PropertyItem propertyItem)
        {
            return Encoding.ASCII.GetString(propertyItem.Value, 0, propertyItem.Len - 1);
        }
     
        static double ReadRational(this PropertyItem propertyItem)
        {
            uint numerator = BitConverter.ToUInt32(propertyItem.Value, 0);
            uint denominator = BitConverter.ToUInt32(propertyItem.Value, 4);
            return (double)numerator / denominator;
        }
     
        static double[] ReadRationals(this PropertyItem propertyItem)
        {
            int nValue = propertyItem.Len / 8;
            double[] values = new double[propertyItem.Len / 8];
            for (int i = 0; i < nValue; i++)
            {
                uint numerator = BitConverter.ToUInt32(propertyItem.Value, 8 * i);
                uint denominator = BitConverter.ToUInt32(propertyItem.Value, 8 * i + 4);
                values[i] = (double)numerator / denominator;
            }
     
            return values;
        }
     
        private static double DMSToDecimal(double[] dms)
        {
            return dms[0] + dms[1] / 60 + dms[2] / 3600;
        }
     
        public static GpsPosition GetGPSPosition(this Image image)
        {
            if (!image.PropertyIdList.Contains(0x0000))
                return null;
     
            string latitudeRef = image.GetPropertyItem(0x0001).ReadExifString();
            double[] latitudeDMS = image.GetPropertyItem(0x0002).ReadRationals();
            double latitude = DMSToDecimal(latitudeDMS);
            if (latitudeRef == "S")
                latitude *= -1;
     
            string longitudeRef = image.GetPropertyItem(0x0003).ReadExifString();
            double[] longitudeDMS = image.GetPropertyItem(0x0004).ReadRationals();
            double longitude = DMSToDecimal(longitudeDMS);
            if (longitudeRef == "W")
                longitude *= -1;
     
            byte altitudeRef = image.GetPropertyItem(0x0005).Value[0];
            double altitude = image.GetPropertyItem(0x0006).ReadRational();
            if (altitudeRef == 1)
                altitude *= -1;
     
            return new GpsPosition(latitude, longitude, altitude);
        }
    }
     
    public class GpsPosition
    {
        private readonly double _latitude;
        private readonly double _longitude;
        private readonly double _altitude;
     
        public GpsPosition(double latitude, double longitude, double altitude)
        {
            _latitude = latitude;
            _longitude = longitude;
            _altitude = altitude;
        }
     
        public double Latitude { get { return _latitude; } }
        public double Longitude { get { return _longitude; } }
        public double Altitude { get { return _altitude; } }
    }

    Tu peux l'utiliser comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var position = image.GetGPSPosition();

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    TomLev

    c'est exactement ce que je cherchais! Merci pour tout et ça marche!

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

Discussions similaires

  1. [Python 3.X] EXIF: Lecture et écriture de données EXIF dans une photo
    Par nollan dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 23/12/2014, 12h28
  2. Lecture des données EXIF de type RATIONAL
    Par Cedric33 dans le forum C#
    Réponses: 2
    Dernier message: 13/03/2009, 11h30
  3. [FLASH MX2004] [XML] Lecture de données XML
    Par ZiT dans le forum Flash
    Réponses: 1
    Dernier message: 12/07/2005, 11h51
  4. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05
  5. lecture de données a partir de fichier
    Par sana dans le forum MFC
    Réponses: 5
    Dernier message: 21/01/2004, 12h57

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