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

 Delphi Discussion :

Date de création d'une photo


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut Date de création d'une photo
    Bonjour
    Par findfirst('C:\photos\*.jpg',$01,resul) j'accède à la date d'enregistrement d'une photo sur mon disque dur : (resul.time).
    Dans tous les cas pour cette année il m'affiche 2011, hors l'explorateur de windows 7 me dit que la photo a été créée en 2010, comment faire par Delphi 6 pour accéder à cette date de création et non à celle de mon enregistrement.
    Merci pour vos éventuelles réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 754
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 754
    Points : 13 338
    Points
    13 338
    Par défaut
    Regarde GetFileTime.

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    Et pour retrouver la date de prise de vue d'un cliché au format Exif, il existe plusieurs bibliothèques ou unités qui peuvent le faire ; notamment LibExif, celle de XnView, et celle-ci, que j'ai commise.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut pas pratique pour moi
    Oui, mais...
    je ne peux rien faire de cette fonction, car je cherche une sorte de fonction
    inverse
    function(nom fichier):datetime;
    si tu connais?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut pour toulourou
    A vrai dire, j'ai besoin d'une courte fonction pour une photo en jpg à intégrer dans un programme delphi 6

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 573
    Points : 25 206
    Points
    25 206
    Par défaut
    mecyber25, as tu regardé la FAQ Comment récupérer les dates associées à un fichier proposé par Andnotor ?

    Il n'est pas difficile de la simplifier pour obtenir ce que tu cherche !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    J'ai lu sa fonction, mais ne comprenant pas sa structure, je ne peux y réfléchir

    D'autre part j'ai utilisé:
    resul.FindData.ftCreationTime;
    et cela me renvoie invariablement 2011
    alors que resul.time fait de même !!!!????
    Je ne comprend pas bien toutes ces fonctions ou procédures

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    je ne m'en sers plus depuis longtemps, mais ceci devrait fonctionner : en ajoutant dyExif à la clause uses, tu pourras en utiliser les fonctions comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function GetExifDateTime(AFileName: TFileName): string;
    var
      ExifDatas: TEXIF;
    begin
      Result:=EmptyStr;
      ExifDatas:=TEXIF.Create(AFileName);
      Result:=TagToStr(OriginalDateTime, ExifDatas); // au format String[20] = 'YYYY:MM:DD HH:MM:SS'#0 
      ExifDatas.Free;
    end;

  9. #9
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut CCR Exif
    Personnellement, j'utilise CCR Exif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      jImg := TJPEGImageEx.Create;
      try
        jImg.LoadFromFile('filename');
        jImg.ExifData.DateTimeOriginal;
        jImg.ExifData.DateTimeDigitized;
      finally
        jImg.Free;
      end;

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut Obscur
    TEXIF est sans doute un composant ou un Type non déclaré, il est non reconnu par mon D6
    Les unites nécessaires à ces fonctions ne sont pas présentes dans la version de mon logiciel, j'ai rajouté DyExif au projet cela ne change rien....

  11. #11
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Tu as bien téléchargé DyExif.pas + copie dans ton répertoire + rajout de DyExif dans USES ?

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Oui
    et à la compilation:
    Identificateur non déclaré: TEXIF

  13. #13
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    En effet, mauvais copier/coller : le nom complet de la classe est TEXIF_Data ! Mille excuses...

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Mon fichier est au format jpg, je ne sais s'il faut le convertir au format exif, ce serait bien trop compliqué...Si c'est le cas ne pourrait-on convertir la fonction plutôt que le format ?
    Dans le cas du jpg , la fonction ne donne rien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    an:=getexifdatetime(s); //s est le nom excat du fichier depuis la racine
    showmessage(an); // le message affiche un blanc

  15. #15
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    pardon, voici un code fonctionnel : je ne me souvenais pas du fonctionnement de l'unité, car je l'ai par la suite encapsulée dans un objet...
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      S: string;
      Flux: TMemoryStream;
      ExifDatas: TEXIF_Data;
      Coderreur: integer;
    begin
      if OpenPictureDialog1.Execute
      then begin
        S:=OpenPictureDialog1.FileName;
        Flux:=TMemoryStream.Create;
        Flux.LoadFromFile(S);
        if GetJpegFormat(Flux)=Ft_EXIF
        then begin
          ExifDatas:=TEXIF_Data.Create(S);
          if GetExifInfos(Flux, ExifDatas, Coderreur)
          then S:='Pris le : ' + TagToStr(OriginalDateTime, ExifDatas) // au format String[20] = 'YYYY:MM:DD HH:MM:SS'#0
          else S:='Erreur n° '+IntToStr(Coderreur);
          ExifDatas.Free;
        end
        else S:='pas de données Exif';
        ShowMessage(S); 
        Flux.Free;
      end;
    end;

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Nouveaux problèmes
    1)Mon openpicturedialog,en delphi 6, dans l'inspecteur d'objets affiche bien un filtre contenant jpg ou jpeg mais à l'execution ces deux choix de filtres disparaissent. (malgré tous mes essais de numération dans filterindex).
    2)j'ai abandonné openpicturedialog pour un
    findfirst('K\Om\Zz\*.jpg',$01,resul);
    et là il m'affiche en mettant en surbrillance la ligne
    if GetJpegFormat(Flux)=Ft_EXIF
    "Impossible d'ouvrir le fichier"...

  17. #17
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut
    Citation Envoyé par mecyber25 Voir le message
    findfirst('K\Om\Zz\*.jpg',$01,resul);
    et là il m'affiche en mettant en surbrillance la ligne
    if GetJpegFormat(Flux)=Ft_EXIF
    "Impossible d'ouvrir le fichier"...
    Qu'est-ce que Flux ? Comment passes-tu de resul à Flux ?

  18. #18
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut
    Citation Envoyé par mecyber25 Voir le message
    1)Mon openpicturedialog,en delphi 6, dans l'inspecteur d'objets affiche bien un filtre contenant jpg ou jpeg mais à l'execution ces deux choix de filtres disparaissent. (malgré tous mes essais de numération dans filterindex).
    Avec Filter qui vaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    All (*.gif;*.png;*.jpg;*.jpeg;*.bmp;*.tif;*.tiff;*.ico;*.emf;*.wmf)|*.gif;*.png;*.jpg;*.jpeg;*.bmp;*.tif;*.tiff;*.ico;*.emf;*.wmf|GIF Image (*.gif)|*.gif|Portable Network Graphics (*.png)|*.png|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp|TIFF Images (*.tif)|*.tif|TIFF Images (*.tiff)|*.tiff|Icons (*.ico)|*.ico|Enhanced Metafiles (*.emf)|*.emf|Metafiles (*.wmf)|*.wmf
    et
    FilterIndex := 4

    j'ai par défaut JPEG Image File (*.jpg) lorsque la fenêtre de dialogue s'ouvre...

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    1)avec la methode de Tourlourou et openpicturedialog, on n'obtient rien car j'ai des images *.jpg et il me dit qu'il n'y a pas de format exif....

    2)quand j'ai essayé findfirst j'ai écrit:
    Flux.LoadFromFile(resul.name);

  20. #20
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    l'explorateur de windows 7 me dit que la photo a été créée en 2010
    resul.FindData.ftCreationTime; et cela me renvoie invariablement 2011 alors que resul.time fait de même !!!!????
    Tu as donc des clichés jpeg dont Windows sait trouver la date de prise, semble-t-il.
    Comme il ne dispose pas de boule de cristal, c'est que l'information est dedans.
    Pour des clichés issus d'APN, le format le plus fréquent est celui Exif, qui permet de loger des infos dans un fichier .jpg.
    Ce n'est pas le seul format, cependant.
    Il faudrait que tu nous donnes l'en-tête du fichier en hexadécimal : une douzaine d'octets devrait suffire pour savoir son type.
    Par exemple, un fichier jpeg avec données Exif commence par :
    FF D8 FF E1 XX XX 45 78 69 66 00 00
    XX XX = longueur de la zone des données Exif
    et en ASCII, 45 78 69 66 = Exif

Discussions similaires

  1. Date de création d'une table
    Par LBO72 dans le forum SQL
    Réponses: 5
    Dernier message: 25/05/2007, 09h24
  2. Date de cliché d'une photo
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 20/05/2007, 11h21
  3. Réponses: 4
    Dernier message: 20/04/2007, 09h13
  4. Réponses: 2
    Dernier message: 13/07/2006, 17h01
  5. [requete] Date de création d'une base oracle.
    Par Cyborg289 dans le forum Oracle
    Réponses: 2
    Dernier message: 14/02/2006, 11h14

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