Aufnahmedatum & Uhrzeit aus EXIF-Daten einer JPG-Datei ermitteln



  • :::
                string dsn = "";
                dsn = @"G:\F\Casio03270001.JPG"; //CASIO
                dsn = @"G:\F\Winkler100_1160.JPG"; // KODAK
    
                Image image = new Bitmap(dsn);
                PropertyItem[] propItems = image.PropertyItems;
                int AnzItems = propItems.Length;
    
                int i = 0;
                int vorh = 0;
                string Datum = ""; // jjjj.mm.tt
                string Zeit = ""; // hh:mm:ss
    
                while ((i < AnzItems) && (vorh == 0)) 
                { 
                    if (((propItems[i].Id == 0x0132) || 
                         (propItems[i].Id == 0x9003) || 
                         (propItems[i].Id == 0x9004))
                      && (propItems[i].Len == 20)) 
                    { 
                     // Datum und Uhrzeit gefunden
    
                    }
                
    

    Ich habe für JPGs aus verschiedenen Kameras versucht zu erkennen, wie man den Aufnahme-Zeitstempel aus exif ermitteln kann. Dabei habe ich jeweils drei IDs gefunden, die Datum und Uhrzeit enthalten, jeweils im Format => tt : mm : jj hh : mm : ss /0

    Allerdings gibt es Unterschiede der Kameras. In allen drei ID-Feldern sind identische Angaben, das kann Zufall sein.

    ID = 0x0132 : CASIO, PENTAX, SAMSUNG-S7, SAMSUNG-A5 ( nicht bei KODAK )
    ID = 0x9003 : CASIO, PENTAX, SAMSUNG-S7, SAMSUNG-A5, KODAK
    ID = 0x9004 : CASIO, PENTAX, SAMSUNG-S7, SAMSUNG-A5, KODAK

    Sind alle drei IDs relevant für Aufnahmedatum/-Uhrzeit.



  • Vielleicht helfen die Infos auf dieser Seite weiter:
    https://exiftool.org/TagNames/index.html

    Gruß
    Michael



  • Der letzte Satz soll wohl eine Frage sein?

    Es gibt im Internet ja verschiedene EXIF-Listen (z.B. Standard Exif Tags oder EXIF Tags).
    Bei Digital-Kameras wirst du bei den drei Werten keinen Unterschied feststellen, da Erzeugung und Speicherung ja innerhalb einer Sekunde stattfinden.
    Für Millisekunden gibt es dafür noch für jeden der drei Werte die Tags:

    0x9290 	37520 	Photo 	Exif.Photo.SubSecTime 		Ascii 	A tag used to record fractions of seconds for the <DateTime> tag.
    0x9291 	37521 	Photo 	Exif.Photo.SubSecTimeOriginal 	Ascii 	A tag used to record fractions of seconds for the <DateTimeOriginal> tag.
    0x9292 	37522 	Photo 	Exif.Photo.SubSecTimeDigitized 	Ascii 	A tag used to record fractions of seconds for the <DateTimeDigitized> tag.
    


  • @Th69, ja, das war eine Frage.
    Dank Euerer Hinweise und Links habe ich Antworten gefunden

    0x0132 	Exif.Image.DateTime
               Datum und Uhrzeit der Bilderstellung. 
               Im Exif-Standard ist dies das Datum und die Uhrzeit, 
               zu der die Datei geändert wurde.
    
    0x9003    Exif.Image.DateTimeOriginal
               Datum und Uhrzeit der Generierung der Originalbilddaten. 
               Bei einer digitalen Fotokamera werden Datum und Uhrzeit der Bildaufnahme aufgezeichnet.
    
    0x9004    Exif.Photo.DateTimeDigitized
               Datum und Uhrzeit der Speicherung des Bildes als digitale Daten.
    
    0x9290    Exif.Photo.SubSecTime            Millisekunden für 0x0132 Exif.Image.DateTime
    0x9291    Exif.Photo.SubSecTimeOriginal    Millisekunden für 0x9003 Exif.Image.DateTimeOriginal
    0x9292    Exif.Photo.SubSecTimeDigitized   Millisekunden für 0x9004 Exif.Photo.DateTimeDigitized
    

    0x0132 gibt es nicht bei allen Kameras. Hier ist u.U. ein abweichender Inhalt zu finden, wenn der Knipser mit Funktionen der Kamera, die nicht jede Kamera anbietet, an dem Bild etwas bearbeitet hat.

    0x9003 könnte der Zeitpunkt sein, zu dem das Bild auf dem Chip aufgezeichnet wurde.

    0x9004 ist wahrscheinlich der Zeitpunkt zu dem das Bild auf die Speicherkarte übertragen wurde.

    0x9003 und 0x9004 sind = Aufnahmedatum und -Uhrzeit
    0x0132 kann abweichen, wenn mit der Kamera nach der Aufnahme an dem Bild Änderungen vorgenommen wurden.


Log in to reply