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