Archive for the ‘Bildverwaltung’ Category

Hierarchische Merkmale zur Suche nach ähnlichen Fotos

Dienstag, März 22nd, 2016

Ich muss zugeben, es hat mal wieder deutlich länger gedauert, bis die jetzige BVASystem Version fertig war. Es lag allerdings nicht daran, das ich wenig Zeit hatte. Diesmal kreuzte mir eine Idee dazwischen, die mich einiges ausprobieren ließ und für einige Zweifel sorgte und auch immer noch sorgt. Froh bin ich aber darüber, das ich entschieden habe, trotz der neuen Idee an dem Programm, so wie ihr es kennt, weiterzuarbeiten.

Nach langer Zeit hab ich nun auch wieder etwas neues zu berichten. Seit einiger Zeit beschäftige ich mich wieder mehr mit der Suche nach ähnlichen Bildern. Die Verfahren, die ich bisher implementierte/ausprobierte , hatten alle den Nachteil, das man für jeden Vergleich eine Differenz berechnen musste. Das bedeutet, je mehr Fotos in der Datenbank sind, desto mehr Berechnungen müssen durchgeführt werden und desto länger muss man auf das Ergebnis warten.

Daher habe ich mir überlegt, die Berechnungen durch hierarchische Bildmerkmale zu vereinfachen bzw. ich hoffe gar darauf, das ich eine möglichst kleine, gut passende Bildmenge aus der Datenbank mit einem SQL-Befehl auswählen kann. In der Menge möchte ich dann die Berechnungen durchführen, damit die Ergebnisse schlussendlich nach Ähnlichkeit sortiert werden können.

Wie das Verfahren genau funktioniert, werde ich euch mitteilen, wenn ich es implementiert habe. Bisher habe ich nur den ersten Schritt getan. Ich habe nun eine Anzeige-Komponente mit der ich hierarchische Bildmerkmale darstellen kann. Sie soll mir in mehrerer Hinsicht helfen. Zum Ersten will ich die Merkmale sehen, damit ich prüfen kann, ob die Berechnung der Merkmale funktioniert und zum zweiten will ich mit der Ansicht entscheiden, wie viele Hierarchie-Stufen ich einsetzen will und wie diese aufgebaut sein sollen. Als nächstes steht nun also an, die eigentlichen Merkmale zu berechnen.

Bildmerkmal-Komponente mit zufälligenTestmerkmale

Bildmerkmal-Komponente mit zufälligenTestmerkmale

Metadaten nach dem IPTC-NAA-Standard

Samstag, September 29th, 2012

Sofern ich irgendwann einmal mit der endlosen Bildbewertungs-Geschichte fertig bin, habe ich auf meiner Roadmap stehen, das im BVASystem Metadaten nach dem IPTC-NAA-Standard erfasst werden können. Da ich allerdings an einigen Stellen hier im Blog bzw. im Bugtracker die Begrifflichkeit „IPTC“ genutzt habe, möchte ich heute ganz kurz erläutern, was IPTC-Metadaten sind.

Was sind IPTC-Metadaten?

Ähnlich, wie bei den EXIF-Daten, handelt es sich bei den IPTC-NAA-Standard um einen Standard, der definiert, in welcher Form gewisse Daten innerhalb eines Fotos abgelegt werden können. Im Gegensatz zu den EXIF Daten, die meist eher technischer Natur sind, handelt es sich bei den IPTC Daten hauptsächlich um bildbeschreibende Informationen. Zum Beispiel können in den IPTC Daten eine Bildbeschreibung, der Fotograf, Schlagworte aber auch Bildrechte gespeichert werden.

Für eine Bildverwaltung sind die IPTC Daten wichtig, da man mit ihnen einen Austausch zwischen verschiedenen Bildverwaltungen sicherstellen kann. Habt ihr zum Beispiel mit Programm „A“ bereits für tausende Bilder Bildbeschreibungen erstellt, so können sie in Programm „B“ direkt importiert werden, ohne das die Beschreibungen manuell kopiert werden müssen. Voraussetzung dafür ist natürlich das sowohl Programm „A“ als auch Programm „B“ den IPTC-Standard unterstützen.

In welcher Form wird das BVASystem den IPTC-Standard unterstützen?

Vielleicht ist es etwas übertrieben, das was ich in naher Zukunft implementieren will, IPTC zu nennen. Allerdings orientiert sich meine Vorgehensweise an dem Standard. Beim letzten Datenbankstrukturupdate habe ich bereits Datenbankfelder angelegt, die für die meiner Meinung nach wichtigsten IPTC-Daten bestimmt sind. Als nächstes möchte ich nun, das genau diese Datenfelder innerhalb der Bilddatenbank gefüllt werden können. Anschließend ist es wichtig, das nach den erfassten Daten recherchiert werden kann.

Für später habe ich mir vorgenommen, das bereits vorhandene IPTC Daten direkt beim Hinzufügen eines Fotos zur Bilddatenbank berücksichtigt werden. Außerdem möchte ich eine Exportfunktion schaffen, bei der die Originalbilder mit geänderten EXIF und IPTC Datenbereich wieder aus der Datenbank herausgeholt werden können. Dafür habe ich mir allerdings noch keinen genauen Zeitplan überlegt.

 

Kriterien zur Bildbewertung

Samstag, August 4th, 2012

Nachdem ich das Bewertungssystem für Fotos vorgestellt habe, möchte ich heute die Standardkriterien vorstellen, die nach der Installation des BVASystems eingerichtet sind. Von den maximal 5 möglichen Unterkriterien werden 3 genutzt, die jeweils durch weitere Unterkriterien konkretisiert werden. Folgende Hauptkriterien werden genutzt:

Wirkung

Das Ziel eines jeden Fotos ist es, bei dem Betrachter eine gewisse Wirkung zu erzielen. Allerdings ist dies auch die schwierigste Aufgabe für den Fotografen. Technische Parameter und Gestaltungsregeln lassen sich noch recht einfach erlernen, die Bildwirkung ist dagegen nur schwer zu fassen. Oft sind es nur Kleinigkeiten, die ein wirkungsloses und ein wirkungsvolles Foto unterscheiden. Außerdem lässt sich die Bildwirkung nur schwer objektiv beurteilen, da hier der persönliche Geschmack der bewertenden Person mit eine Rolle spielt.

Die Unterkategorie Wirkung wird in vier weitere Unterpunkte gegliedert:

  • Ersteindruck  – Subjektiver Ersteindruck, der beim ersten Betrachten des Bildes entsteht
  • Bildaussage – Ist eine klare Aussage im Bild zu erkennen?
  • Kreativität – Wird beispielsweise eine ungewöhnliche Perspektive genutzt um das Bild interessant zu machen?
  • Originalität – Wurde das Motiv des Bildes schon auf vielen anderen Bildern gesehen oder zeigt es etwas total neues?

Technik

Die Aufnahmetechnik ist sicherlich Grundvoraussetzung für ein gelungenes Foto. Liegt Beispielsweise der Schärfepunkt falsch, so nützt einem der beste Bildaufbau nichts. Im Gegensatz zur Wirkung des Bildes lassen sich die technischen Parameter objektiv bewerten.

Die Unterkategorie Technik wird in sechs weitere Unterpunkte unterteilt:

  • Schärfe – Ist das Motiv des Bildes ausreichend scharf dargestellt?
  • Belichtung – Ist das Foto korrekt, über- oder unterbelichtet?
  • Rauschen – Zeigt das Bild ein deutlich sichtbares Bildrauschen.
  • Schieflage – Ist der sichtbare Horizont parallel zu den Bildseiten ausgerichtet?
  • Farbstich – Besitzt das Foto einen sichtbaren Farbstich?
  • Bildgröße –  Je kleiner ein Foto ist, desto schwieriger ist es, das das Bild eine Wirkung entfaltet.

Bildgestaltung

Das letzte Hauptkriterium wird durch die Bildgestaltung definiert. Hier geht es darum, wie das Motiv des Bildes in Scene gesetzt wurde. Die Gestaltung des Bildes hängt dabei überhaupt nicht mit der verwendeten Kamera zusammen. Es ist allein der Fotograf, der hier bewusst oder unbewusst seinen ganz individuellen „Fingerabdruck“ hinterlässt. Prinzipiell gibt es eine Reihe von Regeln, wie zum Beispiel der Goldene Schnitt, die bei der Bildgestaltung beachtet werden sollten. Manchmal ist es eben aber eine gezielt gebrochene Regel, die ein Bild interessant macht. Gerade das macht die Bildbewertung in diesem Punkt schwierig, da es kein eindeutiges richtig bzw. falsch gibt.

Die Unterkategorie Bildgestaltung wird in folgende sechs Unterpunkte unterteilt:

  • Aufteilung – Wie wurde das Foto aufgeteilt? Wurde der goldene Schnitt beachtet? Ist das Hauptmotiv klar zu erkennen?
  • Bildformat – Wurde ein dem Motiv entsprechendes Bildformat gewählt?
  • Störende Elemente – Weist das Bild störende Bildelemente auf, die mit dem eigentlichen Motiv nichts zu tun haben?
  • Stürzende Linien – Liegen die Kanten des Motives nicht parallel zur Abbildungsfläche, treten stürzende Linien auf, durch die Verzerrungen im Bild entstehen.
  • Sättigung – Ist die Farbgebung des Bildes zu flau oder zu kräftig?
  • Kontrast – Bei zu kontrastreichen Fotos gehen Details verloren, während kontrastarme Fotos flau wirken.

Bewertungssystem für Fotos

Donnerstag, August 2nd, 2012

Eigentlich hatte ich geplant, nur fix eine einfache Bildbewertungsfunktionalität in das BVASystem zu integrieren. Nach einigen Überlegungen ist daraus nun allerdings ein recht komplexes System entstanden, welches ich heute hier vorstellen möchte. Die Umsetzung wird leider noch einige Zeit dauern, aber ein erster Entwurf der dazugehörigen Oberflächenkomponente ist bereits fertig.

Prototyp der Bildbewertungsansicht

Prototyp der Bildbewertungsansicht

Grundlage für mein Bewertungssystem ist das weit verbreitete „Sternchen“-Bewertungssystem. Schlechte Bilder werden mit einem Stern und gute Bilder mit maximal 5 Sternen bewertet. Vorteil der Sternchen ist ganz klar, das die Bewertung sehr schnell gesetzt werden kann. Nachteilig ist allerdings, das die Bewertung rein subjektiv aus dem Bauch heraus getroffen wird. Mein Ziel war es, eine objektivere Möglichkeit zu finden, ohne den einfachen Ansatz zu verlieren.

Daher habe ich die Bewertung um Unterkategorien, die wiederum Unterkategorien enthalten, erweitert.  Alle Bewertungen habe ich in einer Baumstruktur angeordnet, so das die Zusammengehörigkeit der einzelnen Kategorien ersichtlich wird.  Als Anwender erhält man 2 Möglichkeiten. Entweder man gibt dem Bild, wie bisher, zwischen 1 und 5 Sternen oder man bewertet alle Unterunterkriterien getrennt voneinander. Im ersten Fall wird für alle Unterkriterien und Unterunterkriterien vom Programm der gleiche Wert gesetzt, wie er vom Anwender ausgewählt wurde. Legt man die Unterkriterien einzelnd fest, so werden die übergeordneten Werte automatisch durch Mittelwertbildung bestimmt.

Für mich habe ich eine Reihe Kriterien festgelegt, mit denen ich wohl gut zurecht kommen werde. Allerdings glaube ich nicht, das jeder Anwender meine Kriterien übernehmen möchte. Aus diesem Grund stelle ich es mir so vor, das der Anwender mit dem Administrationstool im gewissen Rahmen festlegen kann, wie viele Kriterien er nutzen möchte und wie diese beschriftet werden sollen. Festgelegt habe ich mich auf maximal 5 Unterkriterien, die mit jeweils maximal 6 Unterunterkriterien versehen werden können.

In einem weiteren Artikel werde ich in den nächsten Tagen die Standard-Bildbewertungskriterien, die auf dem Screenshot oben bereits zu sehen sind, vorstellen.

Mein Arbeitsablauf zur Bildverwaltung

Samstag, Juni 16th, 2012

Ich hatte bereits angekündigt, das ich einen weiteren Blog schreiben werde, um meine weitere Vorgehensweise bei der Weiterentwicklung des BVASystems zu beschreiben. Bevor ich dies allerdings tue, möchte ich heute kurz meinen Arbeitsablauf zur Bildverwaltung beschreiben.

Kopieren der Fotos

Mein erster Arbeitsschritt, nachdem ich auf einer Fototour gewesen bin, ist natürlich das Kopieren der Bilder von der Speicherkarte auf den PC. Dabei sortiere ich die Bilder nach Aufnahmedatum in eine hierarchische Ordnerstruktur ein. Für jedes Jahr lege ich ein Verzeichnis an, in dem ich für jeden Monat ein Unterordner anlege. In diesen Verzeichnissen lege ich für jeden Tag, an dem ich fotografiert habe, ein weiteres Unterverzeichnis an. Da ich mehrere Kameras besitze und es durchaus möglich ist, das ich an einem Tag mehrere verwendet habe, lege ich für jeden Tag für jede Kamera nochmals je einen Unterordner an. In diese Unterordner kopiere ich dann die Fotos.

Foto-Ordnerstruktur auf der Festplatte

Foto-Ordnerstruktur auf der Festplatte

Anlegen von Fotoalben

Da das BVASystem in der Lage ist, Fotos automatisch Fotoalben zuzuordnen, lege ich im zweiten Schritt Fotoalben an. Möchte ich nur die Fotos eines Wochenendausflugs verwalten, ist das Anlegen der Fotoalben schnell erledigt. Komme ich dagegen von einer Urlaubsreise zurück, dauert das Anlegen der Alben schon etwas länger. Für die Anordnung der Alben habe ich kein festes System. Ich versuche allerdings die Fotoalben möglichst hierarchisch anzulegen. Alle Urlaubsreisen bekommen zum Beispiel ein Unteralbum in dem Album „Reisen“. Teilweise besitzen die Fotoalben noch einen zeitlichen Bezug im Namen, zum Beispiel „Helgoland 2012“

Datenbankimport

Nachdem die Fotoalben angelegt sind, importiere ich alle Bilder in die Datenbank und lasse den Zuordnungs-Automatismus für mich arbeiten.  Mein Datenbankmanagementsystem liegt dabei auf einem anderen Rechner, als die Foto-Verzeichnisstruktur. Nach dem Import belasse ich die Bilder trotzdem in der Foto-Verzeichnisstruktur. Die Bilder in der Verzeichnisstruktur dienen also nur noch als Backup. Arbeiten tue ich nur noch mit den Bildern in der Datenbank.

Bewertung der Fotos

Die eigentliche Bildverwaltung beginnt nun im BVASystem. Ich schaue mir die Fotos mehrfach tageweise an und bewerte sie dabei. Ich nutze folgendes Bewertungssystem:

Kategorie 1:  Die besten Bilder

Diese Bilder sind die Bilder, die ich nochmals mit einem Fotoalbum verknüpfe. Möchte ich beispielsweise einem Freund Urlaubsbilder zeigen, so bekommt er nur diese Bilder zu Gesicht. Schließlich möchte ich niemanden mit mehreren hundert Fotos des gleichen Motivs quälen. Bilder aus dieser Kategorie, die nicht zu sehr ins private gehen, nutze ich auch für meine Foto-Homepage.

Kategorie 2: Gute Bilder

Die Fotos in dieser Kategorie gehören definitiv zu den Bildern, die aufgehoben werden sollten. Meist gibt es aber eine Kleinigkeit, die mich an  Ihnen stört. Es kann aber auch vorkommen, das wenn ich das gleiche Motiv dreimal sehr gut abgelichtet habe, zwei Varianten in dieser Kategorie landen, damit sich innerhalb der besten Bilder keine Wiederholungen befinden.

Kategorie 3: Bilder, die mit einer Nachbearbeitung vielleicht gut werden

Hier sammel ich alle Bilder, die durch eine Nachbearbeitung noch zu retten sind. Stichworte wären hier zum Beispiel: schiefer Horizont, stürzende Linien, leichte Fehlbelichtungen, Farbstiche usw.

Kategorie 4: Schlechte Bilder, die aber einen Erinnerungswert haben

Von einigen Bildern kann ich mich einfach nicht trennen, auch wenn sie technisch einfach nur schlecht sind.  Gerade wenn ich es nicht geschafft habe eine Situation gut einzufangen, bin ich schnell bereit wenigstens ein schlechtes Bilder der Situation zu behalten.

Kategorie 5: Müll

Fotos, die in dieser Kategorie landen werden direkt wieder aus der Datenbank gelöscht. Da ich generell zu viele Fotos mache, versuche ich, das möglichst viele Bilder in dieser Kategorie landen. Jedes Foto, das ich hier mehr lösche, erleichtert es, die guten Fotos bei Bedarf wiederzufinden.

Optimierung der besten Bilder

Im letzten Arbeitsschritt bereite ich einige der besten Bilder für meine Foto-Homepage auf. Als häufigste Aufgabe steht hier das verkleinern der Bilddimension und ein leichtes Nachschärfen an. Für die Homepage bekommt jedes Foto einen aussagekräftigen Titel, eventuell Schlagworte und in ganz seltenen Fällen eine Bildbeschreibung.

Schlussbetrachtung

Mit meinen System komme ich bisher eigentlich recht gut zurecht. Änderungen am Ablauf sind aber durchaus möglich, wenn mir die Bildverwaltungssoftware neue Möglichkeiten gibt. Da das BVASystem zum Beispiel noch keine Schlagworte  unterstützt, nutze ich diese Funktionalität bisher auch noch nicht. Für die Zukunft kann ich mir aber sehr wohl vorstellen, das die Fotos der Kategorie 1 noch mit weiteren Informationen versehen werden, um die Auffindbarkeit zu erleichtern.

 

Was ist der EXIF Header und wofür ist er gut?

Montag, August 8th, 2011

Der aufmerksame Leser meiner im Bugtracker veröffentlichten Roadmap hat bereits gesehen, das in der neuen Programmversion 2.0.0.26 ein neues Modul genutzt wird, welches den EXIF-Header eines Bildes auslesen kann. Obwohl der EXIF Header recht weit verbreitet ist, und demnach viele Nutzer mit der Abkürzung wohl etwas anfangen können, so möchte ich trotzdem kurz für den Rest erklären was der EXIF Header ist und wofür er gut ist.

EXIF ist die Abkürzung für Exchangeable Image File Format. Moderne Digitalkameras nutzen diesen Standard der Japan Electronics and Information Technology Industries Association (JEITA) um aufnahmerelevante Informationen direkt mit dem Bild zusammen abzuspeichern. Die Daten werden in einem sogenannten Header am Anfang einer Bilddatei abgelegt. Der Header selber besteht aus einer sequentiellen Auflistung von sogenannten EXIF-Tags. In jedem Tag wird eine Information, wie zum Beispiel das Aufnahmedatum, gespeichert. Es gibt einige dutzend Tags, die so gut wie immer in einem EXIF-Header vorhanden sind.

Zu diesen Tags zählen:

  • Kamerahersteller
  • Kameramodell
  • Aufnahmedatum
  • Bildorientierung
  • Belichtungszeit
  • Blende
  • Brennweite
  • ISO-Wert

Zusätzlich könnten beispielsweise bei einer Kamera mit integriertem GPS die Koordinaten der Bildaufnahme im Bild ablegt werden. Ebenfalls ist es möglich, das bereits ein kleines Vorschaubild im Header integriert ist. Auch werden häufig herstellerabhängige technische Parameter mit im Header abgespeichert, die sich nicht ohne weiteres allgemein gültig interpretieren lassen. Insgesamt gibt es mehrere hundert verschiedene EXIF-Tags.

Für die Bildverwaltung ganz interessant ist, das der EXIF Header durch die sogenannten IPTC Tags nachträglich erweitert werden kann. Dort lassen sich Bildbeschreibungen, der Fotograph des Bildes und Copyright-Hinweise ablegen. In einer Bildverwaltung sollte diese Möglichkeit genutzt werden, damit für den Anwender die Möglichkeit besteht das Verwaltungsprogramm zu wechseln ohne das wieder alle Bilder neu beschrieben werden müssen.

Vorerst habe ich mir für das BVASystem nur vorgenommen, das das Aufnahmedatum eines Bildes ausgelesen werden kann, damit auch bearbeitete Bilder an die richtigen Stellen der Datenbank sortiert werden können. Nach und nach werde ich das EXIF Modul erweitern, bis möglichst alle Informationen ausgewertet werden können.

Braucht das BVASystem eine Nutzerverwaltung?

Dienstag, Februar 1st, 2011

Als die Version 1.0 des BVASystems damals das Licht der Welt gerade erblickt hatte, meldete sich ein Kunde bei mir mit dem Wunsch, das im Netzwerkbetrieb nicht jeder Nutzer Zugriff auf alle Bilddaten haben soll. Damals entschied ich mich dazu, dem nicht weiter nachzugehen, da die Datenbankstruktur zu verbaut gewesen ist, um auf einfachem Weg eine Nutzerverwaltung  in das Programm zu integrieren.

Ob im neuen BVASystem eine Nutzerverwaltung gebraucht wird, kann ich aktuell nicht richtig entscheiden. Auf der einen Seite ist es sicherlich sinnvoll, wenn Nutzer A die Bilder von Nutzer B nur sieht, wenn Nutzer B dies will und Nutzer A sie auch sehen möchte. Auf der anderen Seite scheue ich aber dem Aufwand, der in der Implementierung einer Nutzerverwaltung liegt. Ich denke, das es aktuell weit wichtigere Features gibt, die auf ihre Umsetzung warten. Da wäre zum Beispiel die Zuordnung der Bilder zu Fotoalben, die als nächstes auf der Roadmap ansteht.

Entschieden habe ich mich aktuell für ein Aufschieben der Entscheidung, aber verbauen möchte ich mir diesmal die Möglichkeit zur Nutzerverwaltung nicht. Ich habe mir überlegt, das ich die Zugriffsverwaltung des Datenbanksystems auch für die Nutzerverwaltung im BVASystem nutzen könnte. Für jeden Nutzer muss dafür ein Account auf dem Datenbanksystem erstellt werden, welcher Zugriffsrechte auf die BVASystem-Datenbank erhält. Diese Accounts lassen sich dann dazu nutzen, die verschiedenen Nutzer zu unterscheiden.

Mit der letzten Datenbankänderung hat sich eine kleine Tabelle in die Datenbankstruktur geschlichen. Dort wird ab der nächsten Version, die sicherlich in den nächsten Tagen fertig werden wird, der Nutzername gespeichert, der sich an der Datenbank angemeldet hat. Fügt der Nutzer Bilder zur Datenbank hinzu, wird sein Nutzername mit den Bildern verknüpft. Somit wäre der erste Schritt zur Nutzerverwaltung getan. Die Datenbank weiß, wem welches Bild gehört.

Weitere Konsequenzen hat die Speicherung des Nutzernamens aber nicht und es ist für die nächsten Versionen auch nicht geplant, daran etwas zu ändern. Aber, wer die Bildverwaltung mit mehreren Nutzern einsetzen möchte, dem sei jetzt bereits angeraten, für jeden Nutzer einen Datenbank-Account anzulegen.

Der Speicherort für Bilddaten

Dienstag, Januar 18th, 2011

Heute möchte ich mich mit der Frage beschäftigen, wo eine Bildverwaltungssoftware die Bilddaten abspeichert. Prinzipiell gibt es 2 Möglichkeiten: die Bilder können mit den Metadaten zusammen in der Datenbank gespeichert werden. oder es kann in der Datenbank nur eine Referenz, bestehend aus Pfad+Dateiname des Bildes, abgelegt werden. Beide Methoden haben ihre Vorteile, aber auch Nachteile.  Da keine der Methoden frei von Nachteilen ist, kann man sich darüber streiten, welche Methode nun die bessere ist. Schlussendlich ist es also eine Entscheidung des Anwenders, welche Methode er bevorzugt.

Bevor ich auf die Vor- und Nachteile eingehe, möchte ich kurz schildern, welches Konzept das neue BVASystem verfolgt bzw. verfolgen wird. Es werden im BVASystem pro Datensatz 3 Bilder abgespeichert. Als erstes wäre da das Thumbnail, welches in der Bildliste angezeigt wird. Standardmäßig hat das Thumbnail eine maximale Bildhöhe von 200 Pixel. Weiterhin wird ein Vorschaubild gespeichert, welches angezeigt wird, wenn der Anwender das Bild im angepassten Zoommodus betrachtet. Es hat standardmäßig eine maximale Höhe von 800 Bildpunkten und lässt sich damit auch auf älteren Rechnern schnell laden und anzeigen. Sowohl das Thumbnail, als auch das Vorschaubild werden in der Datenbank gespeichert. Als drittes wird natürlich die Originalbilddatei gespeichert, welche angezeigt werden soll, sobald der Anwender den angepassten Zoommodus verlässt. Aktuell ist es so, das auch das Originalbild in der Datenbank abgelegt wird. Die Datenbankstruktur ist aber so angelegt, das anstelle des Bildes auch eine Referenz gespeichert werden kann. Der Anwender soll sich später  einmal in den Optionen aussuchen können, ob das Originalbild in der Datenbank oder als Referenz gespeichert werden soll.

Ich habe mich zu diesem Konzept entschieden, da ich mit dem Programm meine eigenen Bilder im Heimnetzwerk verwalte. Da ist es einfacher, wenn die Bilder zentral auf dem Server gespeichert werden, damit alle Rechner darauf zugreifen können. Durch meine kurze Begründung für das Konzept bin ich nun aber auch schon mittendrin bei den Vor- und Nachteilen der beiden Möglichkeiten.

Speicherung der Bilder in der Datenbank

Für die Speicherung der Bilder in der Datenbank spricht, das das Programm damit komplett netzwerkfähig wird. Es macht keinen Unterschied, ob der Datenbankserver lokal, im Heimnetzwerk oder gar im Internet liegt. Es kann immer auf die gleiche Art und Weise auf die Bilder zugegriffen werden. Ebenfalls vorteilhaft ist, das die eingestellten Daten zentral an einer Stelle gespeichert sind. Dadurch können die Daten leicht gesichert und bei einem Datenverlust auch leicht wiederhergestellt werden. Als dritter Vorteil fällt mir ein, das man das Berechtigungssystem der Datenbank nutzen kann, um unerlaubten Zugriff auf die Bilddaten zu verhindern. Bei einer lokalen Installation wird man dies wohl nicht benötigen, aber im Netzwerkbetrieb mit mehreren Nutzern kann dies schon von Bedeutung sein.

Nachteilig an der Speicherung der Bilder in der Datenbank ist, das die Bilder erst wieder  exportiert werden müssen, wenn man sie außerhalb der Bildverwaltung benötigt. Will man die Bilder beispielsweise an ein Fotolabor senden, so wird dies nicht auf direktem Wege funktionieren. Zuerst müssen die ausgewählten Bilder in ein temporäres Verzeichnis auf der Festplatte kopiert werden. Von dort können sie dann ans Fotolabor gesendet werden. Einige sehen dies aber auch als Vorteil, den die Originalbilddateien sind in der Datenbank dadurch sicher vor ungewollten Änderungen. Es geht ganz schnell, das man beispielsweise beim Drehen eines Bildes mit einem Bildbearbeitungsprogramm plötzlich den EXIF-Header des Bildes, der die Meta-Daten wie Aufnahmedatum oder Aufnahmeort enthält, verliert.

Von der Performance her ist die Speicherung der Bilddaten in der Datenbank langsamer als auf dem Dateisystem. Dies erklärt sich dadurch, das kein direkter Zugriff vom Programm auf die Bilddatei erfolgt. Der Zugriff erfolgt zweistufig: Das Programm stellt eine Anfrage an die Datenbank und diese liest dann die Bilddatei von der Festplatte. Häufig angezeigte Bilder wird die Datenbank im Arbeitsspeicher cachen und damit schneller ausliefern als das Dateisystem.

Als größten Nachteil für die Datenbankspeicherung sehe ich die starke Abhängigkeit von der Verwaltungssoftware. Wenn die Software von heut auf morgen nicht mehr weiterentwickelt wird, hat der Anwender ein Problem. Neuer Rechner, neues Betriebssystem und schon nützt einem nichtmal mehr ein Datenbackup, weil die alte Software einfach nicht mehr läuft. Man kann zwar mit Hilfe von Tools der Datenbankhersteller ebenfalls auf die Datenbank zugreifen, aber dafür benötigt man schon einiges an Fachwissen. Außerdem ist die Art von Datenzugriff nicht wirklich komfortabel.

Speicherung von Bildreferenzen

Bei der Speicherung von Bildreferenzen ist die Sache genau anders herum. Der Anwender behält weiterhin vollen Zugriff auf seine Bilder. Die mit der Verwaltungssoftware erstellten Bildbeschreibungen, speichert das Programm idealerweise direkt im Bild ab. Sollte die Software nicht mehr weiterentwickelt werden, oder der Anwender hat ein besseres Programm gefunden, so importiert er seine Bilder einfach mit samt den Bildbeschreibungen in das neue Programm. Auch kann der Anwender sofort auf seine Bilddaten zugreifen, wenn er sie an ein Fotolabor schicken möchte.

Der einfache Zugriff auf die Bilder ist aber auch der größte Nachteil der Bildreferenzen. Der Anwender kann zu jeder Zeit Bilder löschen, verschieben oder umbenennen. In der Datenbank der Verwaltungssoftware entstehen dadurch Datensätze, die keinem Bild mehr zugeordnet werden können. Im schlimsten Fall ist der Sinn der Verwaltungssoftware verfehlt, da der Anwender sein gesuchtes Bild nicht wiederfindet, weil er es vor ein paar Monaten in ein anderes Verzeichnis verschoben hat ohne dabei an die Bildverwaltung zu denken.

Eine Netzwerkfähigkeit ist mit Bildreferenzen nur bedingt erreichbar. Im lokalen Netzwerk kann man vielleicht noch mit Netzwerklaufwerken arbeiten um einen Zugriff von mehreren Rechnern aus zu gewährleisten. An der Stelle wird es aber bereits schwierig, ungewünschte Zugriffe auf die Bilder zu verbieten.

Fazit

Wie bereits oben gesagt, war für mich die Netzwerkfähigkeit der ausschlaggebende Punkt mich für die Speicherung der Bilder in der Datenbank zu entscheiden. Wie sieht es bei euch aus? Speichert ihr die Bilder in der Datenbank oder nutzt ihr nur Bildreferenzen?