Autor Beitrag
hth
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 30.01.15 18:08 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
FileInfo fi1 = new FileInfo("D:/Test.JPG");

FileStream fs = new FileStream(fi1.FullName, FileMode.Open, FileAccess.Read, FileShare.Read);

BitmapFrame bitmapFrame = BitmapFrame.Create(fs, BitmapCreateOptions.None, BitmapCacheOption.None);           

BitmapMetadata bitmapMetadata = bitmapFrame.Metadata as BitmapMetadata;      

var _date = (bitmapMetadata.GetQuery("System.Photo.DateTaken"));

-----------------------------------------------------------

"_date" wird mir als "System.Runtime.InteropServices.ComTypes.FILETIME" angezeigt.

Ich benötige die eigentliche Erstellungszeit als String oder (und) als ulong.


hth

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4020
Erhaltene Danke: 828

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Sa 31.01.15 11:13 
Hallo und :welcome:

FILETIME ist eine Struktur, die zwei Felder für Datum und Zeit (High und Low) bereitstellt. Diese müssen dann noch zu einem long zusammengefügt und dann konvertiert werden. Dafür stellt DateTime eine statische Methode bereit:
ausblenden C#-Quelltext
1:
2:
long ft = (((long)fileTime.dwHighDateTime) << 32) | ((uint)fileTime.dwLowDateTime);
DateTime dateTime = DateTime.FromFileTimeUtc(ft);

Ein ausführlicheres Beispiel gibt es bei PInvoke.net unter FILETIME.