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++Builder Discussion :

Extraction des données Exif


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut Extraction des données Exif
    Bonjour

    Je viens d'écrire un petit programme utilisant GDI+ sous BCB6 pour lister les différentes valeurs présentes dans les données Exif de fichiers Jpg.
    Cela fonctionnait correctement, et en particulier les coordonnées Gps étaient bien extraites ("GpsLatitudeRef", "GpsLatitude" etc...), jusqu'a ce que je tombe sur certains fichiers Jpg dont les donnnées ne sont pas toutes extraites : Par exemple "ExifExposureTime" est bien extrait, mais pas "GpsLatitudeRef".
    J'ai d'abord suspecté que ces fichiers étaient corrompus ou non respectueux des spécifications Exif, mais ils sont correctement décodés dans d'autres logiciels, par exemple Irfan View.

    Exemple de code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Image* image = new Image(WideString(filename));
    UINT count = image->GetPropertyCount();
    ShowMessage(count);
    Résultat de ce code :
    Généralement, le nombre de propriétés obtenu est correct, mais pour ces fichiers Jpg rebelles, il est nettement sous-évalués.

    Quelqu'un a-t-il déja rencontré ce problème ?

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Tu peux éventuellement aller voir ceci: http://delphihaven.wordpress.com/ccr-exif/
    En plus de la librairie, il a des démos déjà compilées, ça te permettra de tester rapidement si sa librairie voit bien tous les tags.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Merci pour ce lien.

    J'ai téléchargé les executables, et ces programmes confirment les tags Exif indiqués par Irfan View.
    D'après ce que j'ai compris dans les sources Delphi, l'API Gdi-Plus n'y est pas utilisée, et les tags Exif sont décodés "100% pure Delphi code" pour reprendre l'expression de l'auteur.

    Voici une comparaison de ce que trouve ce programme (colonne de gauche) avec ce que je peux extraire avec Gdi-Plus (colonne de droite), en utilisant un de ces fichiers Jpg "rebelles"



    Se pourrait-il que Microsoft n'ait pas mis à jour son API ?

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Salut Alain,

    Je suis aussi en train de chercher comment lire les Exif mais malheureusement pas aussi avancé que toi.

    J'ai trouvé quelques liens mais je n'ai pas encore réussi à compiler le code:

    Premièrement OpenExif qui semble très complet mais compliqué à intégrer:
    OpenExif: http://openexif.sourceforge.net/

    JHead qui est un petit programme en C++ qui m'a l'air très prometteur pour intégrer dans mon code mais là aussi je n'ai pas encore pu compiler directement le code. Je comptais partir dans cette direction:
    JHead: http://www.sentex.net/~mwandel/jhead/

    Finalement, une solution qui paraît très complète mais il faut compiler toute la partie JPG:
    PictureMtaData: http://picturemetadata.sourceforge.net/

    Voilà, j'espère que cela pourra t'aider (je dois avouer que je suis aussi intéressé par tes progrès si tu trouves qqch d'intéressant).

    Patrick

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Merci pour ces trois liens interessants.

    OpenExif semble effectivement plus complet, mais fait un peu "usine à gaz", et comme il n'y a aucun exemple d'utilisation fourni, on ne sait pas trop ce qu'il extrait comme informations.

    JHead est léger et, semble-t-il, facile à intégrer dans Cpp Builder. Par contre, son extraction de données Exif est assez incomplète dans l'état actuel (voir ci-dessous)

    "Picture Metadata Toolkit" semble plus complet, mais il sous-traite cette partie d'extraction des données Exif à "OpenExif", donc on ne peut pas en espérer plus que le premier de cette liste.


    J'ai soumis mon fichier "rebelle" à JHead, et voila ce que ça donne :



    On peut remarquer que :
    - Au lieu de la résolution (96*96 pixels par pouce) il indique la taille de l'image (640*480 pixels)
    - Il manque des données importantes à mes yeux, par exemple les tags Orientation, "GPS image direction" et "GPS map datum"

    C'est peut-etre une bonne solution de repli s'il n'y a pas moyen de faire fonctionner correctement GDI+ pour ce qui est de l'extraction des données Exif.
    Ça m'interesserait quand même de trouver réponse à ma question : Est-ce moi qui ne sait pas utiliser GDI+, ou presente-t-il un dysfonctionnement avec certaines images Jpg ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Il y a un petit exemple d'application de JHead sur Code Project:
    http://www.codeproject.com/KB/graphics/cexif.aspx

    C'est déja assez ancien (2003) mais ça avance bien le travail.
    Je pense que les quelques insuffisances de JHead que souligne alain (bien vu) sont compensées par la légéreté de la solution qui permet de corriger plus facilement les bugs et de faire évoluer le lecteur Exif en fonction des besoins de mon projet.

    C'est un choix personnel, car la solution CCR Exif me parait par ailleurs excellente.

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Cexif est effectivement un bon exemple d'utilisation de Jhead sous Windows.
    Par contre, il est un peu en retrait concernant les données fournies : Il n'extrait pas les tags Gps, alors que Jhead les fournit, mais ça doit pouvoir etre complété facilement.

    En cherchant un peu plus, je suis tombé sur un autre programme, PhotoProperties, qui comme moi, utilise également Gdi+ pour extraire les données Exif.
    Il peut etre obtenu ici : http://www.codeproject.com/KB/graphi...roperties.aspx

    Voici ce qu'il donne avec mon fichier "rebelle" :



    On voit donc que les données extraites sont exactement les mêmes que celles fournies par mon propre programme (c'est à dire absence des tags Gps, entre autres), ce qui semble confirmer que Gdi+ ne voit pas toutes les données Exif dans certains fichiers Jpg. Il ne reste plus qu'à attendre les prochaines mises à jour de .NET

    A titre de comparaison, voici le résultat obtenu avec un fichier Jpg "coopératif", où les tags Gps sont biens indiqués :


Discussions similaires

  1. [RSS] extraction des données d'un flux
    Par toddy_101 dans le forum APIs
    Réponses: 4
    Dernier message: 23/02/2007, 17h28
  2. vc++(6)+extraction des données dans une image(.tif)
    Par spootnic22 dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/11/2006, 16h14
  3. [MySQL] Problème de Charset à l'extraction des données
    Par naoufal01 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/11/2006, 13h14
  4. extraction des données dans une table Access
    Par moabomotal dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 11h17

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