Exif-Daten aus Bild auslesen
-
Hallo,
ich möchte einige Exif-Daten aus einer Bild-Datei auslesen. Die Belichtungszeit, Blende und ISO-Empfindlichkeit kann ich schon auslesen, aber mit dem Aufnahme-Zeitpunkt habe ich noch ein Problem. Der Code sieht so aus:
namespace Test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Image image = new Bitmap("IMG_4266.JPG"); pictureBox1.Image = image; int exp1 = BitConverter.ToInt32(image.GetPropertyItem(33434).Value, 0); int exp2 = BitConverter.ToInt32(image.GetPropertyItem(33434).Value, 4); int blende1 = BitConverter.ToInt32(image.GetPropertyItem(33437).Value, 0); int blende2 = BitConverter.ToInt32(image.GetPropertyItem(33437).Value, 4); int iso = BitConverter.ToInt16(image.GetPropertyItem(34855).Value, 0); String date_time = BitConverter.ToString(image.GetPropertyItem(36867).Value, 0, 20); // Hier ist das Problem richTextBox1.AppendText(exp1.ToString() + "/" + exp2.ToString() + "\r"); richTextBox1.AppendText("F/" + (blende1/blende2).ToString() + "\r"); richTextBox1.AppendText("ISO" + iso.ToString() + "\r"); richTextBox1.AppendText(date_time + "\r"); } } }
Die Ausgabe sieht so aus:
1/40 F/4 ISO1000 32-30-31-35-3A-30-34-3A-30-39-20-30-39-3A-33-39-3A-35-39-00
Offensichtlich werden die ASCII-Zeichen hexadezimal ausgegeben. Was muss ich ändern wenn ich das im Klartext sehen möchte?
Die Dokumentation zum Exif-Format steht hier, siehe Seite 42 und 43:
http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdfGruß
Michael
-
Einfach ohne den
BitConverter
direkt verwenden?
Sieht so aus, als wäreValue
bereits alles was Du brauchst:
2015:04:09 09:39:59
-
Caligulaminus schrieb:
Einfach ohne den
BitConverter
direkt verwenden?
Sieht so aus, als wäreValue
bereits alles was Du brauchst:
2015:04:09 09:39:59
Dann kommt diese Fehlermeldung:
Cannot implicitly convert type 'byte[]' to 'string'Gruß
Michael
-
micha7 schrieb:
Cannot implicitly convert type 'byte[]' to 'string'
Dann must Du's wohl explizit konvertieren. Aber frag' mich nicht, wie. C# ist nicht mein Ding.
-
Habe jetzt eine Lösung gefunden:
String date_time = Encoding.ASCII.GetString(image.GetPropertyItem(36867).Value);
Gruß
Michael