Schritt 2: Code
Jetzt kommen wir zum eigentlichen Herzen des Programms, dem
Code. Dazu klicken wir doppelt auf den Button und befinden uns
nun im entsprechenden Click-Event. Dieser Code läuft ab, wenn wir
während der Programmausführung auf den Button klicken. Hier
verdrahten wir den OpenFileDialog, so dass wir die ausgewählte
Datei verwenden können.

Klicken Sie auf die Abbildung um den Code zu erhalten!
Dazu schreiben wir gleich noch die Prozedur, welche die EXIFDaten
in die entsprechenden Textboxen schreibt:

Klicken Sie auf die Abbildung um den Code zu erhalten! 
Klicken Sie auf die Abbildung um den Code zu erhalten! 
Klicken Sie auf die Abbildung um den Code zu erhalten!
Nun brauchen wir allerdings noch das Wichtigste, den Code für
das Ermitteln der Informationen. Dazu erzeugen wir uns eine
neue Klasse durch Rechtsklick auf FotoInfoViewer im
Projektmappen-Explorer.

Diese Klasse benennen wir EXIFData. Der Code dazu schaut
folgendermaßen aus:
Die Prozedur SetDefaults bzw. Funktion GetEXIFData in der Klasse
EXIFData wurden als Shared deklariert, damit wir keine Instanz der
Klasse erzeugen müssen, um diese verwenden zu können.
Die EXIF-Daten, die wir haben wollen, sind Metadaten innerhalb
der Bilddatei. Sie stecken in so genannten PropertyItems, die von
System.Drawing.Imaging bereitgestellt werden. Über die folgende
Zeile im oben genannten Code, holen wir uns alle PropertyItems
und schreiben sie in ein Array:

Klicken Sie auf die Abbildung um den Code zu erhalten!
Über die nachfolgende "For Each"-Schleife durchlaufen wir die
Metadaten und schauen dabei aber nur nach bestimmten Properties,
die wir vorher über die Enum EXIFPropertyName festgelegt
haben. Es folgen ein paar Konvertierungen in die richtigen Datenformate
und wir haben was wir wollten. Die Helper-Prozedur
SetDefaults existiert nur, um Standardwerte zu setzen, für den Fall,
dass keine entsprechenden Metadaten vorhanden sind, d.h. dass
das Bild beispielsweise nicht aus einer Digitalkamera kommt.
Die Ergebnisse werden zum Schluss auf die öffentliche Struktur
EXIFDataStruct geschrieben, auf die wir dann aus dem Formular
heraus (in HoleExifInfos) zugreifen können. Und so sieht er dann in
Aktion aus, unser Viewer für EXIF-Daten:

Anmerkung:
Aus Gründen der Übersichtlichkeit
wurde in
diesem Beispiel bewusst
auf Fehlerbehandlung
(Exception Handling)
verzichtet.
|