Laden...

Dateiinformationen von Bilddateien auslesen

Erstellt von Klaus2003 vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.148 Views
K
Klaus2003 Themenstarter:in
2 Beiträge seit 2015
vor 9 Jahren
Dateiinformationen von Bilddateien auslesen

Hallo zusammen,

nachdem ich schon über Google und in diversen Hilfeseiten gestöbert habe, möchte ich mal mein Problem hier hinein stellen.

Kurz zu meiner Problematik. Ich bin dabei ein Programm zu schreiben, wo ich zwei Verzeichnisse mit Bilddateien abgleichen kann. Auf der linken Seite wird der Bilderordner der Festplatte und auf der rechten Seite die Speicherkarte von der Kamera geladen.

Nach dem Import von den Bildern auf die Festplatte und einer späteren Sortierungsaktion habe ich Bilder auf der Festplatte gelöst, welche aber immer noch auf der Speicherkarte vorhanden sind.

Dafür habe ich mich hingesetzt und ein Programm geschrieben, welches die Reinigung der Speicherkarte übernimmt. Im Programm kann ich neben den oben beschriebenen Pfaden auch den Dateityp und das Aufnahmejahr einstellen.

Jetzt habe ich aber das Programm, dass ich Schwierigkeiten habe, auf das Jahr und zukünftig auch auf Bildinformationen (wie z. B. Kamerahersteller, Brennweite, ISO und Belichtungszeit) zugreifen möchte. Aber die Bildinfos sind erstmal nicht so wichtig, wichtiger ist die Reinigung mittels Auswahl des Aufnahmejahres.

Der nachfolgende Code ist zum Füllen der rechten Listbox. In diesen Code möchte ich noch das Kriterium mit der Jahresauswahl einfügen.

 public void listbox_rechts()
        {
            // rechte Listbox (Suche nach Pfad und Datei Ziffer "20" / Suche nach Datei Ziffer "21"
            if (Directory.Exists(textBox2.Text))
            {
                string Pfadzwei = textBox2.Text;
                string[] verzeichnis20 = Directory.GetDirectories(Pfadzwei);

                //Prüfung ob noch weitere U-Verzeichnisse existieren?
                if (verzeichnis20.Length > 0)
                {
                    foreach (String uordner20 in verzeichnis20)
                    {
                        String subord20 = uordner20;
                        string[] tmpdat20 = Directory.GetFiles(subord20);
                        foreach (String dateien20 in tmpdat20)
                        {
                            int sgnsuche20 = dateien20.LastIndexOf("\\");
                            if (dateien20.LastIndexOf(cb_fltr2.Text) > 0)
                            {
                                listBox2.Items.Add(dateien20.Remove(0, 1 + sgnsuche20));
                            }
                            else if (cb_fltr2.Text == "Alle Typen")
                            {
                                listBox2.Items.Add(dateien20.Remove(0, 1 + sgnsuche20));
                            }// else if
                        }//     foreach (String dateien20 in tmpdat20)
                    }//         foreach (String uordner20 in verzeichnis20)
                }//             if (verzeichnis20.Length > 0)
                else if (verzeichnis20.Length == 0)
                {
                    String subord21 = Pfadzwei;
                    string[] tmpdat21 = Directory.GetFiles(subord21);
                    foreach (String dateien21 in tmpdat21)
                    {
                        int sgnsuche21 = dateien21.LastIndexOf("\\");
                        if (dateien21.LastIndexOf(cb_fltr2.Text) > 0)
                        {
                            listBox2.Items.Add(dateien21.Remove(0, 1 + sgnsuche21));
                        }
                        else if (cb_fltr2.Text == "Alle Typen")
                        {
                            listBox2.Items.Add(dateien21.Remove(0, 1 + sgnsuche21));
                        }// else if
                    }//     foreach (String dateien21 in tmpdat21)       
                }//         else if (verzeichnis2.Length == 0)
            }//              if (Directory.Exists(textBox2.Text))

Hoffe mir kann jemand helfen?

16.834 Beiträge seit 2008
vor 9 Jahren

Und wo genau ist nun das Problem oder die Frage?
Wo hängst Du? Was hast Du versucht?

K
Klaus2003 Themenstarter:in
2 Beiträge seit 2015
vor 9 Jahren

Innerhalb von der Prozedur möchte ich noch einbauen, dass nur von dem ausgewählten Jahrgang die Bilder angezeigt werden und nicht "Alle" auf der Karte.

Der dargestellte Code ist zum Füllen der rechten Listbox. In diesen Code möchte ich noch das Kriterium mit der Jahresauswahl einfügen. Dazu muss ich aber auf die einzelnen Dateien innerhalb des Ordners zugreifen, öffnen und nach >>Übereinstimmung<< mit Auswahl des Jahres hinzufügen.

Genau da ist mein Problem. Ich weiß noch nicht, an welche Stelle ich diese Dateioperation einbauen muss und wie ich diese bewerkstelligen muss.

S
322 Beiträge seit 2007
vor 9 Jahren

Hallo,

hier ist es ganz gut beschrieben wie man an die Bild-Metadaten rankommt:
https://msdn.microsoft.com/de-de/library/xddt0dz7%28v=vs.110%29.aspx

Wenn das Erstell-Datum immer dem Aufnahmedatum entspricht dann kannst Du es auch nehmen. Dazu einfach eine Instanz von FileInfo erstellen und dann das Datum abfragen.

Viel Erfolg.

Kennst Du FreeFileSync?