Posts Tagged ‘BVASystem’

Jahresfazit 2012

Montag, Dezember 31st, 2012

Der letzte Tag des Jahres bietet sich förmlich für einen Rückblick auf die letzten 12 Monate an. Im groben und ganzen bin ich mit dem vergangenem Jahr zufrieden. Vergleicht man die jetzige Programmversion mit der von vor einem Jahr, erkennt man deutliche Fortschritte. 

Versionsvergleich von Anfang und Ende 2012

Versionsvergleich von Anfang und Ende 2012

Die anfänglich recht rudimentären Datenbankfunktionalitäten konnten im laufe des Jahres deutlich erweitert werden. Anfang des Jahres konzentrierte ich mich auf die automatischen Zuordnung von Fotos zu Fotoalben. Dabei entstanden eine Reihe von Metadatenelementen, wie zum Beispiel die Belichtungsbewertung, die in beliebiger Kombination zur automatischen Zuordnung genutzt werden können. Außerdem entstand ein vierter Ansichtsmodus, in dem die zu einem Bild gehörenden Informationen angezeigt und teilweise bearbeitet werden können. Anschließend, nach meinem diesjährigen Urlaub, arbeitete ich an einer möglichst objektiven Bewertungsfunktionalität für Fotos. Die Arbeit nahm weit mehr Zeit in Anspruch, da der Umfang der Bewertungsfunktion mit jeder Zwischenversion größer wurde. Ende des Jahres integrierte ich mehrere Möglichkeiten zur schnellen Editierung von Bildtiteln und Bildbewertungen

Neben der Bilddatenbank entstand in diesem Jahr auch das Administrationstool, mit dem die technischen Schwierigkeiten der Programminstallation verringert werden konnten. Ganz frisch und leider noch nicht in einem fertigen Zustand, ist ein weiteres Tool hinzugekommen, mit dem ich die wichtigsten Funktionen des BVASystems automatisch testen möchte. Etwas unzufrieden bin ich mit der vorhandenen Dokumentation. Ich habe es nur geschafft, die Funktionen zu beschreiben, die nicht offensichtlich sind. Leider fehlt mir meist die Lust, Dokumentationen zu schreiben, denn programmieren macht deutlich mehr Spaß.    

Für das nächste Jahr habe ich bereits reichlich Ideen. Angefangen habe ich mit der Umsetzung der Schlagwortfunktionalität, die ich bereits lange vor mir her schiebe. Sie soll ähnlich, wie bereits die Fotoalben eine Funktion zur automatischen Zuordnung erhalten. Gerade bei den Schlagworten ist es wichtig, das ich einen Weg finde, der dem Anwender möglichst viel Arbeit abnimmt, denn wenn ein Bild wiedergefunden werden soll, geschieht dies meist über die Schlagworte. Außerdem arbeite ich bereits an einem Prototypen einer Komponente, welche die Oberfläche der Bilddatenbank stark verändern wird. Sie wird nämlich die beiden zentralen PageControl-Steuerelemente ersetzen. Sollten sich meine Erwartungen an dem Prototypen erfüllen, spiele ich außerdem mit den Gedanken einen Filterdialog zu schaffen, mit dem unerwünschte Fotos der aktiven Bildliste ausgeblendet werden können.

Ich hoffe, das ich es auch im Jahr 2013 wieder schaffe, so viele Veränderungen am Programm vorzunehmen. Es wäre schön, wenn ich Ende Dezember 2013 hier schreiben kann, das sich meine Erwartungen wieder erfüllt haben. 

Nachladen des Originalbildes

Freitag, Dezember 14th, 2012

Kurz vor den Feiertagen ist heute die wohl letzte Version für dieses Jahr vom BVASystem fertig geworden. Die letzten beiden Wochen habe ich hauptsächlich damit verbracht, das in den Darstellungen der Bilder das Originalbild nachgeladen werden kann. Außerdem habe ich Änderungen an den Debugausgaben und den Fehlermeldungen vorgenommen. Zu guter letzt habe ich meine Testanwendung soweit erweitert, das dort nun die erste BVASystem-Funktion getestet werden kann.

Nachladen des Originalbildes

Damit  Bilder schneller angezeigt werden können, arbeitet das BVASystem mit einem kleineren Vorschaubild. Dieses ist von der Größe so gewählt, das es ausreicht um Bilder im „Zoom-Fit“ in guter Qualität darzustellen. Bisher hatte ich es allerdings versäumt, das beim Wechsel des Zoom-Modus das Originalbild nachgeladen wird. Jetzt ist es so umgesetzt, das wenn das Originalbild eine bessere Qualität bringen würde als das vorhandene Vorschaubild, dann wird im Hintergrund das Originalbild geladen. Während des Ladevorgangs bekommt der Anwender weiterhin das Vorschaubild angezeigt und kann in diesem beliebig navigieren. Sobald das Originalbild fertig geladen ist, wird die Ansicht aktualisiert. Als Anwender bemerkt man, das die Qualität plötzlich besser wird. 

Damit sichtbar ist, welches Bild gerade angezeigt wird, ist im oberen Bereich neben dem Bildtitel ein Knopf/Informationsbereich angebracht. Folgende 4 möglichen Bilder können dort angezeigt werden:

Vorschaubild wurde geladen Das Vorschaubild wurde geladen. Mit einem Druck auf das Bild, kann das Originalbild geladen werden.
 Originalbild wird geladen Das Originalbild wird gerade geladen.
 Originalbild wurde geladen Das Originalbild wurde geladen.
 Nachladen des Originalbildes ist nicht möglich Das Nachladen des Originalbildes ist nicht möglich, da die Bildgröße des Originalbildes nicht bekannt ist. Mit einem Druck auf das Bild erscheint ein Hinweisdialog, der beschreibt wie dieser Fehler beseitigt werden kann.

Veränderungen an den Debugausgaben

Für eine spätere Änderung die ich vorhabe, war es notwendig die Funktion zur Ausgabe von Debug-Informationen anzupassen. Hauptsächlich ging es mir dabei um die Tatsache, das wegen der geöffneten Dateien, das BVASystem nur einmal gestartet werden konnte. Im Zuge dessen habe ich aber gleich weitere Änderungen einfließen lassen. 

  • Neu: DBLog-Funktion – Hier werden die an die Datenbank gesendeten SQL-Befehle in eine Datei geschrieben
  • Neu: Die Debugfunktionen können nun im Hauptmenü unter „Hilfe“ jederzeit ein- und ausgeschaltet werden
  • Geändert: Fehlerdialoge sind nun auch aus den Hintergrund-Threads möglich
  • Geändert: Startparameter – Hier können nun die Parameter „-trace“ und „-dblog“ verwendet werden. 
  • Neu: Silentmode – Hier werden die Fehlermeldungen nicht angezeigt, können allerdings mit „GetLastError“ abgefragt werden (Habe ich für die automatische Testung benötigt)

Erweiterung der Testanwendung

Die letzten Tage habe ich dann noch ab der Anwendung zur automatisierten Testung weitergearbeitet. Dort bin ich nun soweit, das eine erste Funktion des BVASystems (das Herstellen der Datenbankverbindung) getestet werden kann. Dabei habe ich mit Absicht einen Fehler provoziert, damit ich sehen kann, ob der umgesetzte Silentmode der Fehlerbehandlung funktioniert. Bisher ist es allerdings noch nicht möglich, der zu testenden Funktion Parameter mit auf den Weg zu geben. Daran werde ich in der nächsten Zeit weiterarbeiten. 

Ausblick

Für die nächste BVASystem Version steht wieder eine größere und für mich wohl schwierige Änderung auf dem Plan. Und zwar werde ich die Bildladefunktion für die Miniaturbilder anpassen. Bisher werden nacheinander immer alle Bilder nacheinander geladen. Mein Ziel ist es, das nur noch die geladen werden, welche auch zur Anzeige benötigt werden. Dadurch möchte ich Zeit und vor allem Speicherplatz einsparen. Außerdem werde ich wohl damit beginnen, mir ein Konzept zu überlegen, wie ich eine Schlagwortfunktionalität in das BVASystem integrieren könnte. Und zu guter letzt seht natürlich die Weiterarbeit an der Testanwendung mit auf dem Plan. 

BVASystem Version 2.1.3

Donnerstag, November 22nd, 2012

Seitdem ich die letzte stabile Softwareversion veröffentlicht habe, sind nun wieder einige Monate vergangen, in denen sehr viel passiert ist. Mittlerweile sind zum Glück alle begonnenen Änderungen abgeschlossen. Bevor ich nun wieder größere Baustellen aufreiße, scheint mir der Moment perfekt, um die nächste stabile Version zu veröffentlichen.

Was ist in den letzten Monaten entstanden?

Die letzten Monate standen ganz im Zeichen der Bildinformationen, so das nun fast alle neuen Tabellen, die bei der letzten Datenbank-Änderung hinzugekommen sind, auch genutzt werden. Die meiste Zeit ging sicherlich in das komplexe System zur Bildbewertung.  Als Anwender hat man im BVASystem die Wahl, ob man zur Bewertung eines Fotos die Unterkriterien nutzt, oder ob man nur eine einzelne globale Bewertung auswählt. Durch Nutzung der Unterkriterien kann eine objektivere Bildbewertung vorgenommen werden, während die globale Bewertung natürlich viel schneller vorgenommen werden kann.

In der Bildinformationsansicht sind eine ganze Reihe neue Informationspanel entstanden. So ist nun zum Beispiel ein Panel vorhanden, in dem der Aufnahmeort eines Fotos angezeigt werden kann. Ebenso ist ein Panel vorhanden, welches die errechneten Bildparameter (mittlere Helligkeit, Belichtungsbewertung, Tonwertumfang) anzeigt. Außerdem ist ein Panel vorhanden, in dem zu jedem Bild ein Bildtitel, der Autor und eine Bemerkung erfasst werden können. 

Alle Stellen, an denen der Bildtitel bzw. die Bildbewertung angezeigt werden, bieten die Möglichkeit zur Schnelleditierung. Dazu muss einfach die jeweilige Position angeklickt werden. In dem dann sichtbaren Popupfenster können die Daten editiert werden.

BVASystem 2.1.3 - Bildinformationen

BVASystem 2.1.3 – Bildinformationen

Zu guter letzt habe ich noch die Vollbildansicht um eine Gestensteuerung erweitert. Zieht man mit gedrückter linker Maustaste nach links, wird das nächste Bild geladen. Wird mit der Maus eine Linie nach rechts gezogen, wird das vorherige Bild geladen. Zeichnet man ein „größer“ Zeichen auf dem Monitor wird zum letzten Bild navigiert und analog dazu beim Zeichnen eines „kleiner“ Zeichen zum ersten Bild. Zusätzlich kann das aktive Foto noch per Mausgeste gedreht werden. Dazu muss bei gedrückter Maustaste nach rechts und dann nach unten gezogen werden. Das Bild wird nun nach rechts gedreht . Nach links gedreht wird, indem man die Maus nach links und anschließend nach unten bewegt.

Was wird in den nächsten Monaten folgen?

In den nächsten Entwicklerversionen werde ich zwei größere Probleme angehen, die seit längerem bestehen. Als erstes werde ich dafür sorgen, dass wenn benötigt das Originalbild nachgeladen wird. Aktuell ist es nämlich so, das das BVASystem fast ausschließlich mit einem sogenannten Vorschaubild arbeitet. Die Bildgröße dieses Bildes ist so gewählt, das es in der angepassten Ansicht schnell geladen und in optimaler Qualität angezeigt werden kann. Verlässt man die angepasste Ansicht, wird das Originalbild leider nicht nachgeladen. Damals, als ich begonnen habe das BVASystem neu zu entwickeln, erschien mir das nachladen nicht als sonderlich wichtig. Aktuell fehlt mir, beim Sortieren meiner Bilder, die wirkliche 100% Anzeige. Ohne die Ansicht kann ich einfach die Bildschärfe nicht richtig beurteilen.

Das zweite Problem liegt in der Art und Weise, wie ich die Miniaturbilder lade. Sie werden nämlich alle nacheinander in den Arbeitsspeicher geladen. Ich habe es nicht genau ausprobiert, aber schätzungsweise bis 2500 Bilder wird dies so funktionieren. Sollen mehr Bilder eingeladen werden, so kann das Programm keinen weiteren Arbeitsspeicher mehr anfordern und die Miniaturbilder bleiben folglich leer. Daher möchte ich das Laden der Miniaturbilder durch einen sogenannten Miniaturbildcache erweitern. In dem Cache sollen immer genau die Bilder vorgeladen werden, die für die Anzeige benötigt werden bzw. die in naher Zukunft wahrscheinlich benötigt werden. Dadurch habe ich nie mehr als einige hundert Bilder geladen, habe kein Arbeitsspeicher-Problem mehr und kann theoretisch beliebig viele Bilder in einer Bildliste darstellen. Mit dem Miniaturbildcache wird außerdem die Wartezeit für den Anwender verkürzt, da sofort die Bilder geladen werden, die für die Anzeige benötigt werden.

Da ich bis zur nächsten stabilen Softwareversion nicht nur Fehler beseitigen will, habe ich mir außerdem vorgenommen,  mit der Implementierung einer Schlagwortfunktionalität zu beginnen. Nachdem in der jetzigen Version 2.1.3 erste textuelle Daten zu einem Foto erfasst werden können, ist es einfach an der Zeit die wichtigen Schlagworte anzugehen. In welcher Form die Umsetzung erfolgen wird, steht allerdings noch nicht ganz fest. Ich bin noch dabei die Vor- und Nachteile der unterschiedlichen Möglichkeiten abzuwägen. 

 

Maus-Gestenerkennung mit Delphi

Freitag, November 16th, 2012

Von Handys bzw. von Tablet-PCs kennt man bereits die Erkennung von Gesten, die man per Finger mehr oder weniger auf die Displays schmiert. Spätestens mit Windows 8 dringt diese Technik nun auch in die Windows-Welt vor.  Daher habe ich mir vorgenommen, zu prüfen, ob der Einsatz einer Gestensteuerung im BVASystem sinnvoll ist und mit welchem Aufwand es sich umsetzten lässt. Als Ergebnis ist nun erstmal eine kleine Mini-Anleitung entstanden, die beschreibt, wie man Gesten in Delphi einsetzen kann.

Glücklicherweise muss man die Erkennung der Gesten in Delphi nicht selber entwickeln. Sogar einige gut funktionierende Standardgesten sind bereits definiert. Generell würde ich erst einmal empfehlen, keine eigenen Gesten zu definieren. Meine Versuche eine „6“ als Geste zu definieren, scheiterten daran, das sie zu nah an meiner Handschrift lagen. Durch einen vergrößerten Toleranzbereich konnte ich das Problem entschärfen. Allerdings wurden dann plötzlich auch andere Gesten als „6“ erkannt.

Um in der eigenen Anwendung Gesten zu verwenden, sind nur einige kleine Schritte notwendig:

Hinzufügen eines  TGesturemanagers

Der erste und einfachste Schritt ist das Hinzufügen einer Komponente vom Typ TGesturemanager zum Dialog, in dem die Gesten verwendet werden sollen. Den Gestenmanager kann man sich wie eine Gesten-Bibliothek vorstellen. Er dient zur Definition und Speicherung der Gesten, die verwendet werden sollen.  Nach dem Hinzufügen enthält er bereits 34 definierte Standardgesten. Zusätzliche eigene Gesten können definiert werden, indem man doppelt auf die Komponente klickt.

TGesturemangager

TGesturemangager

Verknüpfen des Gestenmanagers

Als nächstes muss die Komponente bzw. die Komponenten, die auf Gesten reagieren sollen, mit dem Gestenmanager verknüpft werden. Dazu sucht man im Objekt Inspektor nach der Eigenschaft „Touch“. Als Untereintrag davon findet man den Eintrag „Gesturemanager“ und wählt dort den eben hinzugefügten Gestenmanager aus.

Auswahl der Gesten

Anschließend kann man unter „Gestures“ die gewünschten Gesten auswählen, indem man auf die jeweiligen Checkboxen klickt. Nun hat man 2 Möglichkeiten:  Die einfachere Möglichkeit ist sicher, wenn man die Geste direkt im Objektinspektor mit einer TAction verknüpft.

Gestenauswahl im Objektinspektor

Gestenauswahl im Objektinspektor

Hat man keine TAction verwendet, so kann die gewünschte Funktionalität in dem Event OnGesture() implementieren. Der Quelltext dazu könnte zum Beispiel in etwa so aussehen:

procedure TBVAVollbild.ImageGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
case EventInfo.GestureID of
sgiLeft: begin
showmessage('Nach Links');
end;
sgiRight: begin
showmessage('Nach rechts');
end
else showmessage('Unbekannte Geste');
end;
end;

Anschließend kann nun bereits getestet werden, ob die ausgewählten Gesten funktionieren.

Schnelleditierung von Bildtitel und globaler Bildbewertung

Mittwoch, November 7th, 2012

Relativ spontan habe ich mich am vorigen Wochenende dazu entschieden, das BVASystem um eine Funktion zur schnellen Editierung von Bildtiteln und globaler Bildbewertung zu erweitern. Bisher hatte ich die Veränderung des Bildtitels nur in der Bildinformationsansicht vorgesehen. Nun kann der Titel auch direkt bei den Miniaturbildern verändert werden. Man spart sich also die ständige Wechselei zwischen den Ansichtsmodi.  Um den Bildtitel zu verändern, muss einfach der angezeigte Bildtitel angeklickt werden. Es öffnet sich ein kleines Popupfenster, welches ein Eingabefeld besitzt. Nachdem der Bildtitel verändert wurde, kann der neue Titel durch den dahinterliegenden Knopf gespeichert werden. Durch einen Klick außerhalb des Popupfensters, kann der Editiervorgang jederzeit abgebrochen werden. Analog dazu kann die globale Bildbewertung verändert werden, dazu muss aber natürlich auf die Bildbewertung geklickt werden.

Miniaturbild mit aktiver Schnelleditierung

Miniaturbild mit aktiver Schnelleditierung

Außerdem habe ich in den letzten Tagen ein weiteres Bildinformationspanel fertiggestellt. Die zur automatischen Zuordnung genutzten Bildparameter mittlere Helligkeit, Tonwertumfang und Belichtungsbewertung können nun im Fenster „Bildparameter“ betrachtet werden. Dies soll hauptsächlich die Möglichkeit schaffen, das automatische Zuordnungen nachvollzogen werden können.

Weiterhin ist es möglich, das die drei Felder (Bildtitel, Autor und Beschreibung) im Bildbeschreibungspanel verändert werden können. Die Funktionsweise ist dabei genauso umgesetzt, wie es bereits bei den Bildbewertungen implementiert ist. Sobald eines der Felder geändert wurde, werden auf der linken Seite 2 Knöpfe sichtbar. Einer dient zur Speicherung der Änderungen und mit dem zweiten können die Änderungen rückgängig gemacht werden.

Zusammengefasst kann man sagen, das in den letzten 2 Wochen richtig viel neues entstanden ist und einiges an Komfort  dazugewonnen wurde . Für die nächste Version ist dies allerdings nicht wieder zu erwarten. Ich habe mir nämlich vorgenommen, wieder eine stabile Softwareversion zu erstellen. Hauptsächlich geht es also ans Testen und Fehlerbeseitigen. Am besten ich fange gleich damit an …

Automatisierte Testung

Mittwoch, Oktober 31st, 2012

Nach der Installation der letzten Entwicklerversion ist euch vielleicht aufgefallen, das sich ein drittes Programm namens „BVATest.exe“ in dem Setup befunden hat. Mit dem Programm möchte ich immer wiederkehrende Tests des BVASystems automatisieren und mir damit langfristig eine Menge Arbeit ersparen. Außerdem hoffe ich, das durch die systematische Herangehensweise eventuelle Fehler nicht so häufig übersehen werden. Damit ihr die durchgeführten Tests nachvollziehen und eventuell eigene Tests durchführen könnt, habe ich mich entschlossen die Testanwendung in die Entwicklerversionen zu integrieren. Stabile Softwareversionen werden die Testanwendung dagegen nicht enthalten.

Was sind automatisierte Tests?

Beim Testen einer Software überprüft man, ob das Programm den Anforderungen entspricht. Dabei ist es notwendig, das die komplette Prüfung mit jedem Versionssprung erneut durchgeführt wird. Es ist nämlich möglich, das eine einzige geänderte Codezeile Auswirkungen auf längst abgeschlossene Funktionen hat. Durch eine automatisierte Testung erreicht man, das der Aufwand zur Testung stark reduziert wird. Außerdem wird verhindert, das man durch eine unsystematische Herangehensweise Testfälle vergisst.

Auch kann durch eine automatisierte Testung die Qualität einer Software beurteilt werden.  Je mehr Anforderungen erfolgreich erfüllt werden, desto qualitativ hochwertiger ist die Software. Mit Hilfe einer automatisierten Testung kann also festgestellt werden, ob die alte Version X oder die neue Version Y besser zu den Anforderungen passt.

Der größte Vorteil einer automatisierten Testung ist ganz klar der Geschwindigkeitsvorteil der sich bei der Entwicklung ergibt. Außerdem ist es für den Entwickler einfacher, Änderungen am Programmcode vorzunehmen, da die Auswirkungen jederzeit schnell überprüft werden können.

Nachteil einer automatisierten Testung ist natürlich, das die Tests selber wiederum Fehler enthalten können. Zum Beispiel kann bei der Definition der Tests eine wichtige Anforderung übersehen werden. Wird allerdings so ein Fehler gefunden, so kann durch die Anpassung der automatisierten Testung sichergestellt werden, das dieser Fehler kein zweites mal übersehen wird.

Geplante Funktionsweise

Das Testprogramm „BVATest“ soll mit XML basierten Projektdateien arbeiten. In diesen Projektdateien können beliebig viele Testaufgaben definiert werden. Bei der Definition einer Aufgabe müssen alle zu nutzenden Parameter festgelegt werden. Außerdem sollen Abhängigkeiten definiert werden können. Zum Beispiel muss zum Test der Funktion „Datenbankbild löschen“ zuerst ein Bild in der Datenbank gespeichert werden.

Alle definierten Tests werden nach dem Start der Testung nacheinander abgearbeitet. Rückgabewerte werden in einem gesonderten Teil der Oberfläche dargestellt und außerdem werden sie mit erwarteten Rückgabewerten verglichen. Treten Unterschiede auf, so werden diese deutlich hervorgehoben.

Vorläufiges Entwicklungsziel

Mein vorläufiges Entwicklungsziel ist es, das durch das Testprogramm alle Worker-Aufgaben automatisiert getestet werden können. Dadurch, das die Aufgaben komplett von der Oberfläche losgelöst sind, bieten sie sich regelrecht zur automatisierten Testung an. Außerdem bilden sie einen wichtigen Bestandteil der Bilddatenbank. Was nützt es, wenn ich viele tolle Funktionen habe, aber gerade beim Hinzufügen eines neuen Fotos einen Fehler übersehe.

Bildinformationspanel: Bildbeschreibung

Montag, Oktober 22nd, 2012

Vor einigen Wochen habe ich angekündigt, das ich aktuell das Ziel verfolge, das das BVASystem die IPTC-Daten unterstüzten kann. Mit dem heutigen Tag ist der erste kleine Mini-Meilenstein zu diesem Ziel erreicht. In dem Bildinformationspanel „Bildbeschreibung“ habe ich einen kleinen Dialog erstellt, in dem Bildtitel, Autor und eine Beschreibung angezeigt werden können.

Bildinformationspanel Bildbeschreibung

Bildinformationspanel Bildbeschreibung

In den nächsten 14 Tagen werde ich mich daran setzen, das diese Daten auch editiert werden können. Außerdem habe ich noch 3 weitere größere Themenkomplexe bearbeitet. Wie immer habe ich auch wieder an meiner Lieblingsbaustelle, den Bildbewertungen, weitergemacht.

Für Bilder und Bildlisten, die von der Datenbank geladen wurden, kann nun ausgewählt werden, welche Bildbewertung angezeigt wird.  Angezeigt werden kann entweder die manuelle Bildbewertung oder die automatische Bildbewertung. Damit diese leicht zu unterscheiden sind, haben die beiden Bewertungsarten nun unterschiedliche Icons erhalten. Die automatische Bewertung wird durch einen Stern mit 4 Ecken symbolisiert, während die manuelle Bewertung durch einen Stern mit 5 Ecken dargestellt wird. Natürlich ist es auch weiterhin möglich, das keine Bildbewertung angezeigt wird.

Automatische/Manuelle Bildbewertung in einer Miniaturbilderansicht

Automatische/Manuelle Bildbewertung in einer Miniaturbilderansicht

Weiterhin habe ich mich mit der Frage beschäftigt, wie die Einstellungen der Bildinformationsansichten dauerhaft gespeichert werden können. Herausgekommen ist dabei ein XML basierter Ansatz, den ich auch bereits zum Teil umgesetzt habe. Beim Beenden des BVASystems wird eine XML-Datei erstellt, die die aktuellen Einstellungen der Bildinformationsansichten enthält. Diese soll beim nächsten Programmstart dann wieder eingelesen werden.

Als letztes habe ich mir überlegt, wie ich das BVASystem effektiv testen kann, bevor ich eine neue Version zum Download anbiete. Dabei ist mir aufgefallen, das ich zumindest die Tests für die Datenschicht automatisieren könnte. Gerade die Aufgaben des Workers schreien förmlich danach automatisiert getestet zu werden. Mit der aktuellen Installationsroutine wird zum ersten mal ein weiteres Programm namens „BVATest“ installiert. Was es mit diesem Programm genau auf sich hat, werde ich in den nächsten Tagen in einem extra Blog erläutern.

Erweiterung des EXIF-Moduls zur Auswertung von GPS-Informationen

Sonntag, Oktober 7th, 2012

In der EXIF Spezifikation sind rund 25 Datenfelder vorhanden, die dazu dienen den Aufnahmeort eines Fotos festzuhalten. So können zum Beispiel geographische Länge und Breite, die Höhe, die Blickrichtung und sogar die Richtung und Geschwindigkeit mit der sich die Kamera während der Aufnahme bewegt hat, im Foto abgespeichert worden sein.

Auch wenn es aktuell noch recht wenige Kameras gibt, die über einen GPS-Empfänger verfügen, habe ich mich trotzdem entschlossen, das das  BVASystem mit diesen Daten umgehen können muß.  Ich halte die Kenntnis über den Aufnahmeort für eine sehr wichtige Information, um ein Foto einem Fotoalbum bzw. sogar einem Schlagwort zuzuordnen. Ich war in der letzten Woche zur Entspannung für ein paar Tage an der Nordsee. Nun könnte ich alle Fotos, die in der Nähe von 54°1′N 8°55′E aufgenommen wurden, dem Album „Friedrichskoog“ zuordnen. Da es mir dort gut gefallen hat und ich wahrscheinlich noch einmal hinfahren werde, ist diese Zuordnung sogar sinnvoller als eine Zuordnung per Aufnahmedatum. Bilder der nächsten Fahrt könnten ohne neue Regel sofort dem Album „Friedrichskoog“ zugeordnet werden. Per Aufnahmedatum ist dies nicht möglich, da ich den neuen Reisetermin ja noch nicht kenne.

Aber soweit ist es noch nicht. In der, ab heute zum Download bereitstehenen Version 2.1.2.51-dev, können vorhandene GPS-Daten aus Fotos extrahiert und auch in der Datenbank abgespeichert werden. Außerdem werden sie in der Bildinformationsansicht auf dem Aufnahmeort-Panel angezeigt.

Außerdem habe ich mal wieder an meiner Lieblingsbaustelle weitergearbeitet. Die oberste Ebene der manuellen Bildbewertung kann nun jederzeit per Strg+1, Strg+2, … und Strg+5 gesetzt werden. Mit Strg+0 kann die vorhandene Bewertung wieder entfernt werden. Diese Shortcuts sind ganz praktisch, wenn man mehrere Bilder schnell bewerten möchte. Zur Visualisierung der Bewertungen habe ich die Einzelbild und Miniaturbildansichten so verändert, das sie dort angezeigt werden. Und auch für die nächste Version habe ich noch eine Idee, wie ich die Bildbewertungsfunktionen verbessern kann. Lasst euch also überraschen.

Neue Miniaturbilderansicht mit Bildbewertungen

Neue Miniaturbilderansicht mit Bildbewertungen

 

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.

 

Fertigstellung der manuellen Bildbewertung

Montag, September 17th, 2012

Bis auf einige Kleinigkeiten ist heute nun auch die manuelle Bildbewertung fertig implementiert. Leider hat die Umsetzung etwas länger gedauert, als ich eigentlich geplant hatte. Zum einen hatte ich den Aufwand für die Nutzerinteraktion unterschätzt und zum zweiten setzte mich eine Krankheit für knapp eine Woche außer Gefecht. Nun ist aber endlich die 50. Version der Bildverwaltung fertig und steht zum Download bereit.

Wie funktioniert die manuelle Bildbewertung?

Die manuelle Bildbewertung setzt sich aus einer Reihe von  Unterbewertungen zusammen, die wiederum Unterbewertungen enthalten können. Als Anwender hat man nun die Wahl, ob man einfach und schnell nur die gängigen 1 bis 5 Sterne vergeben möchte, oder ob jede einzelne Unterbewertung separat gesetzt werden soll. Wird eine Bewertung, die weitere Unterbewertungen enthält, festgelegt, so werden gleichzeitig die Unterbewertungen auf den gleichen Wert gesetzt. Andersherum werden übergeordnete Bewertungen durch eine Mittelwertbildung berechnet.

Manuelle Bildbewertung im ungespeicherten Zustand

Manuelle Bildbewertung im ungespeicherten Zustand

Bereits wenn man die Maus über die Sterne bewegt, wird visuell dargestellt, wie sich das Setzten der Bewertung auswirken wird. Das eigentliche Setzen der Bewertung geschieht, indem auf den gewünschten Stern geklickt wird. Alternativ steht ein Popupmenü zur Verfügung, in dem auch bereits gesetzte Bewertungen wieder entfernt werden können. Sobald mindestens eine Bewertung geändert wurde, werden auf der linken Seite 2 Knöpfe sichtbar. Einer dient zur Speicherung der Änderungen und mit dem zweiten können die Änderungen verworfen werden. Die Speicherung der Bildbewertungen geschieht, wie alle anderen Datenbankänderungen auch, mit Hilfe des Workers.

Ausblick

Die Bildbewertung wird mich auch in der nächsten Version des BVASystems noch einmal beschäftigen, denn ich möchte die fehlenden Kleinigkeiten nicht aus den Augen verlieren. Zum einen möchte ich den Anwender durch eine Frage darauf aufmerksam machen, das wenn er innerhalb der Bildliste navigieren möchte, nicht gespeicherte Bewertungen verloren gehen. Die gleiche Information möchte ich anzeigen, wenn die Bildinformationsansicht verlassen wird. Außerdem erachte ich es für sinnvoll, das die globale manuelle Bewertung  per Tastaturkürzel zu erreichen ist. Wahrscheinlich werde ich Strg+1 für 1 Stern, Strg+2 für 2 Sterne, usw. dafür auswählen. Die Tastaturkürzel sollen dabei global, das heißt in jedem Anzeigemodi funktionieren.

Weiterhin in Planung ist eine Erweiterung des EXIF-Moduls. Vorhandene GPS-Informationen sollen ausgelesen und in dem entsprechenden Bildinformationspanel angezeigt werden.