Abend
Ich hab hier eine Methode (Quelle weiß ich leider nicht mehr):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| internal static class FileInfoExtensions { public static Dictionary<string, string> GetDetails(this FileInfo fi) { Dictionary<string, string> ret = new Dictionary<string, string>(); var shl = (Shell)Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application")); Folder folder = shl.NameSpace(fi.DirectoryName); FolderItem item = folder.ParseName(fi.Name); for (int i = 0; i < 150; i++) { string dtlDesc = folder.GetDetailsOf(null, i); string dtlVal = folder.GetDetailsOf(item, i); if (dtlVal == null || dtlVal == "") continue; ret.Add(dtlDesc, dtlVal); } return ret; } } |
Die liest mit Hilfe der Shell32.dll die Details aus den Eigenschaften einer Datei. Das funktioniert auch ganz wunderbar, aber ich würde auch gerne die Bild-Auflösung haben.
In den Details stehen Höhe und Breite. Zur Not reicht das zum ausrechnen ja eigentlich, soweit ich weiß.
Aber nicht einmal Höhe und Breite wird im Programm mit ausgelesen.
Weiß jemand, wie ich dennoch die Auflösung bekomme?
Ich kann/möchte nicht für einzelne Formate das regeln, weil die in meiner Sammlung bunt gemischt sind und mir reicht es ja, wenn das ausgelesen wird, solange Windows es anzeigen kann. Wenn Windows es auch nicht kennt, bleibt das halt leer, so wild ist das auch nicht.
Wenn die Info also nicht gegeben ist, ist das egal. Auch bei den bisherigen Details ist nicht immer alles gegeben, das prüfe ich intern nach und frage dann nach der Angabe durch den Nutzer und so wollte ich das auch hier machen.
Gruß
Edit: Ich hab grad meinen Irrtum entdeckt. Die Datei liest nicht die Details, sondern die allgemeinen Eigenschaften aus. Aber dennoch bleibt die Frage: Kann ich irgendwie die Auflösung von jeder Datei auslesen und wenn es keine gibt, einfach nix?