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.pdf

    Gruß
    Michael



  • Einfach ohne den BitConverter direkt verwenden?
    Sieht so aus, als wäre Value bereits alles was Du brauchst:
    2015:04:09 09:39:59



  • Caligulaminus schrieb:

    Einfach ohne den BitConverter direkt verwenden?
    Sieht so aus, als wäre Value 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


Anmelden zum Antworten