Digitale Fotografien im Griff

Zusammenfassung

Lernen Sie einige Techniken kennen, mit denen Sie ihre Sammlung digitaler Fotografien in den Griff bekommen.

Techniken

VBA, Formulare, Berichte

Voraussetzungen

Access 2000 oder höher

Beispieldateien

Bilddatenbank.mdb

André Minhorst, Duisburg

Kennen Sie das auch Die digitalen Fotos werden mal hier und mal da auf die Festplatte gebannt, und hierhin und dorthin wird noch eine Sicherung gespeichert. Die übersicht kann da sehr schnell leiden. Oder Sie möchten, bevor es weitere 1000 neue Fotos auf die Festplatte verschlägt, endlich einmal ein paar Abzüge machen lassen. Das Zusammenstellen und der Transport der Bilder zum Fotostudio bringt dann weitere Hindernisse. Mit der Lösung in diesem Beitrag behalten Sie den überblick – und mehr …

Wenn man nicht von Anfang an Ordnung hält, bricht schnell Chaos aus. Das gilt für den Schreibtisch wie für die Festplatte – und dort vor allem für zu archivierende Daten. Zu diesen gehören ganz sicher Digitalfotos – man schießt den Speicher der Kamera voll, leert den Inhalt auf der Festplatte aus, macht neue Schnappschüsse und so fort.

Eine Digitalkamera lädt dazu ein, ruhig mal einen Klick zu viel zu riskieren – kostet ja schließlich nichts. Das heißt – fast nichts, denn ein wenig Speicherplatz geht schon verloren, wenn man die Fehlschüsse nicht gleich von der Platte putzt oder gar nicht erst dort speichert.

Knipsen, bis die Platte platzt

Aber seien Sie mal ehrlich: Solange der Speicherplatz auf der Festplatte nicht dem Ende zugeht, besteht scheinbar kein Grund zum Aussortieren der überflüssigen Bilder. “Das mache ich, sobald ich die besten Schnappschüsse dieser Rutsche entwickeln lasse!” – so heißt es sicher bei vielen Hobby-Fotografen.

Bis man dann wenig später feststellt, dass mal wieder einige hundert neue Fotos zusammengekommen sind, ohne dass man auch nur ein einziges hat entwickeln lassen.

Und das ist auch schon das nächste Problem: Will man die Bilder online entwickeln lassen, stellt man schnell fest, dass DSL und Konsorten zwar einen passablen Download bieten, beim Upload aber nur ein wesentlich geringerer Datendurchsatz möglich ist. Und bei Fotos á zwei Megabyte macht das nach ein paar Bildern keinen Spaß mehr.

Also beschließen Sie, auch mal den mittlerweile zur Standardausrüstung gehörenden CD- oder DVD-Brenner zu verwenden und einen Rutsch Bilder zum nächsten Discounter oder auch zum Fotofachgeschäft zu bringen.

Also nehmen wir mal drei Abzüge von diesem hier, zwei von jenem, … – halt: Wie kann ich von vornherein festlegen, wie viele Abzüge ich von jedem Bild haben möchte Ach, das soll ich dann im Geschäft machen – mit dem quengelnden Kind auf dem Arm und fünfzehn anderen Kunden im Rücken, die gerne mal ein wenig indiskret den einen oder anderen Blick erhaschen möchten Nein. Dann doch lieber direkt die Bilder mehrfach auf CD brennen, ab in den Fotoladen, und “einmal von jedem eins, 10 x 15, matt bitte!”.

Wenn Sie bei dieser Vorgehensweise noch den überblick bewahren: Herzlichen Glückwunsch. Falls nicht oder falls vielleicht auch mal der weniger bedarfte Partner oder die Kinder Fotos zusammenstellen sollen, ohne dass anschließend das Backup zum Wiederherstellen der Daten ran muss, finden Sie im vorliegenden Beitrag die Werkzeuge, um Ihre Bilder im Griff zu haben. Diese müssen Sie dann nur noch zusammensetzen – oder Sie warten bis zur nächsten Ausgabe von Access im Unternehmen.

Access & Co. helfen weiter

In den folgenden Kapiteln lernen Sie einige Techniken kennen, mit denen Sie Ihre digitale Fotosammlung verwalten:

  • Routine zum Einlesen aller .jpg-Dateien eines Verzeichnisses und der enthaltenen Unterverzeichnisse
  • Klasse zum Ermitteln von Bilddaten – unter anderem Erstellungsdatum, Abmessungen, Kameratyp und weitere Daten zu den Kameraeinstellungen zum Zeitpunkt der Aufnahme
  • Tool zum Manipulieren von digitalen Bildern: Mit ImageMagick können Sie von VBA-Routinen aus änderungen an digitalen Fotos vornehmen – etwa, um Mini-Versionen der Bilder zu erstellen, die in der Datenbank gespeichert werden können.
  • Technik zum Einlesen von Bildern in OLE-Objekt-Felder einer Tabelle
  • Technik zum Anzeigen von Bildern aus OLE-Feldern, ohne diese zwischendurch auf der Festplatte speichern zu müssen

Im vorliegenden Beitrag lernen Sie die grundlegenden Techniken kennen, die Sie in einer der folgenden Ausgaben von Access im Unternehmen zu einer komfortablen Bildverwaltung zusammensetzen.

Bevor Sie mit dem Vorbereiten einer Ladung von Bildern zum Entwickeln beginnen können, müssen Sie zunächst einmal die Festplatte nach den vorhandenen Bildern durchkämmen. Auf diese Weise können Sie vielleicht direkt feststellen, wie viele Sicherheitskopien des einen oder anderen Bildes sich dort mittlerweile befinden.

JPEGs nach vorne, bitte!

Zum Erfassen der Bilder müssen Sie nur die gewünschten Verzeichnisse durchlaufen und alle enthaltenen Dateien finden, die mit .jpg enden.

Die erste Version dieser Routine, die Sie später sukzessive ausbauen werden, arbeitet mit einer Tabelle namens tblBilder, die neben dem Primärschlüssel lediglich den Dateinamen und den Dateipfad der Bilddateien speichert. Diese Informationen sollen separat in zwei Textfeldern mit je 255 Zeichen verwaltet werden.

Der Aufruf der Routine aus Quellcode 1 lautet etwa folgendermaßen:

BilderEinlesenBasis "<Verzeichnis>"

Eines der größten Probleme im Zusammenhang mit Fotos – egal ob im herkömmlichen oder digitalen Format – ist oft die fehlende Zeitangabe. Selbst das Speicherdatum der entsprechenden Datei ist nicht unbedingt zuverlässig: Kopieren Sie einmal eine Datei und schauen Sie sich das Erstellungsdatum der neuen Datei an – es ist das aktuelle Datum. Durch einfaches Kopieren der Dateien verlieren Sie also wichtige Informationen. Zwar liefert das änderungsdatum ebenfalls das eigentliche Erstellungsdatum (vorausgesetzt, Sie haben das Foto noch nicht bearbeitet), aber Otto Normalverbraucher weiß dies unter Umständen nicht.

Quellcode 1: Alle .jpg-Dateien in einer Tabelle speichern

Public Sub BilderEinlesenBasis(strVerzeichnis As String)
    Dim i As Integer
    Dim intOrdner As Integer
    Dim strDateiname As String
    Dim strOrdner() As String
    Dim db As Database
    Dim rstBilder As Recordset
    
    Set db = CurrentDb
    Set rstBilder = db.OpenRecordset("tblBilder")
    strDateiname = Dir(strVerzeichnis)
  
    Do While strDateiname <> ""
        If InStrRev(strDateiname, ".jpg") > 0 Then
            rstBilder.AddNew
            rstBilder!Dateiname = strDateiname
            rstBilder!Dateipfad = strVerzeichnis
            rstBilder.Update
        End If
        strDateiname = Dir
    Loop
    strDateiname = Dir(strVerzeichnis, vbDirectory)
    
    Do While strDateiname <> ""
        If strDateiname <> "." And strDateiname <> ".." Then
            If GetAttr(strVerzeichnis & strDateiname) And vbDirectory Then
                intOrdner = intOrdner + 1
                ReDim Preserve strOrdner(intOrdner)
                strOrdner(intOrdner) = strVerzeichnis & strDateiname
            End If
        End If
        strDateiname = Dir
        DoEvents
    Loop
    For i = 1 To intOrdner
        BilderEinlesen strOrdner(i) & "\"
    Next i
    rstBilder.Close
    Set rstBilder = Nothing
    Set db = Nothing
End Sub

Eine Alternativlösung ist das Integrieren des Erstellungsdatums am rechten unteren Rand des Bildes, aber das stört doch sehr, wenn man mal ein Bild in einen Bilderrahmen stecken möchte.

Ein Bild ist mehr als ein Bild

Zum Glück denken die Kamerahersteller weiter: Sie speichern in den Bilddateien ausführliche Informationen über das Bild – und dazu gehören nicht nur das Datum, an dem das Bild aufgenommen wurde, sondern noch viele Informationen mehr.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar