Posts Tagged ‘Roadmap’

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. 

 

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.

 

Fokus Hauptfunktionalität

Montag, April 16th, 2012

Meiner Roadmap ist seit einigen Wochen zu entnehmen, das ich mich nun, nachdem ich mich die letzten Monate viel mit Datenbanksystemen rumgeärgert habe, wieder verstärkt der Hauptfunktionalität des BVASystems, den Metadaten, widmen werde. Dies erscheint mir sinnvoll, da sich das BVASystem gerade in diesem Punkt von anderen Bildverwaltungsprogrammen unterscheidet. Geplant ist, die automatische Zuordnung von Bildern zu Fotoalben soweit auszubauen, dass auch komplexere Bedingungen definiert und genutzt werden können. Die bereits vorhandenen Elemente „Aufnahmedatum“, „Besitzer des Bildes“ und „Verwendete Kamera“ funktionieren zwar schon ganz gut, lassen aber eben nur simple Entscheidungen zu, da sie sich kaum kombinieren lassen.

Aktuell ist mein Ziel zu demonstrieren, was mit dem Metadatensystem alles erreicht werden kann. Dafür ist es natürlich am wichtigsten, weitere Metadatenelemente zu schaffen, die beliebig mit den bereits vorhandenen Elementen kombiniert werden können. Langfristig möchte ich die Metadaten noch an andere Verwaltungselemente, wie zum Beispiel die Schlagworte, binden.

Den ersten abgesteckten Entwicklungsschritt habe ich nun auch bereits erreicht. Das Metadatenelement „Mittlere Helligkeit“ ist in der Version 2.1.1.41 nun zum ersten Mal enthalten. Das Besondere dabei ist, dass der Helligkeitswert nicht aus dem Header des Fotos ausgelesen werden kann. Es handelt sich vielmehr um einen Wert, der direkt aus dem Foto errechnet wird. Das BVASystem ist damit also in der Lage, helle und dunkle Fotos zu unterscheiden.

Weiterhin habe ich das Metadatenelement „Aufnahmedatum“ verbessert, in welchem nun auch die Uhrzeit eingestellt werden kann. Bisher war es so, das man nur tageweise definieren konnte. War man beispielsweise vormittags wandern und nachmittags auf einer Familienfeier, waren die Fotos automatisch nicht voneinander trennbar. Nun können auch beliebig viele Fotoalben angelegt werden, welche alle Fotos enthalten, die an dem gleichen Tag aufgenommen wurden.

Veränderte Metadatenelemente der Version 2.1.1.41-dev

Veränderte Metadatenelemente der Version 2.1.1.41-dev

Als dritte kleine Verbesserung habe ich die Metadatenelemente in der Auswahlliste gruppiert. Damit sollte es, auch wenn es mal mehrere Dutzend Metadatenelemente werden, trotzdem übersichtlich bleiben. Die 3 nun verwendeten Gruppen lauten:

  • EXIF: Hier werden alle Elemente zusammengefasst, die auf dem EXIF-Header eines Fotos basieren
  • DB: Hier werden alle Elemente zusammengefasst, die sich direkt aus der Datenbank ableiten lassen
  • BV: Hier werden alle Elemente zusammengefasst, die mittels Bildverarbeitung direkt am Foto errechnet werden

Auch in der nächsten Version werde ich mich um die Metadaten kümmern. Ziel ist es das erste bildbewertende Metadatenelement zu schaffen. Damit soll es dann möglich sein, das nur gelungene Bilder den Weg in ein Fotoalbum finden. Außerdem werde ich damit beginnen, einen vierten Ansichtsmodi „Bildinformationen“ in das Programm zu integrieren.

Jahresfazit 2010

Donnerstag, Dezember 30th, 2010

Die letzten Stunden des Jahres sind angebrochen und ich möchte diese dafür nutzen, ein Fazit ziehen.  Es ist Zeit, sich einmal damit auseinander zu setzen, was in den vergangenen Monaten erreicht wurde. Und natürlich müssen die „Vorsätze“ fürs neue Jahr aufgeschrieben werden, damit nächstes Jahr dann wieder eine Bilanz gezogen werden kann.

Der Plan, ein neues BVASystem zu programmieren, ist mittlerweile 3 oder sogar schon 4 Jahre alt. Das Abenteuer Hausbau verhinderte bisher allerdings, das ich abends die Motivation dazu hatte, mich vor den Rechner zu setzen. Dieses Jahr zu Ostern konnte ich die letzte große Baustelle auf meinem Grundstück abschließen. Nachdem der Muskelkater verzogen war, suchte ich wieder nach neuen Herausforderungen und fand diese im BVASystem 2.0.

Die erste Ankündigung für das neue BVASystem mit Datenbank stammt vom 21. Juli 2010, ich habe also nur ein halbes Jahr damit verbracht, an dem Programm zu schrauben.  Prinzipell bin ich mit dem Entwicklungsstand, der erreicht wurde, sehr zufrieden. Es ist nur ein klein wenig deprimierend,  das man in einem Hobbyprojekt weit mehr Ideen hat, als man in der wenigen Zeit umsetzen kann. Aber einen der Hauptkritikpunkte des alten BVASystems, das langsame, träge Laden der Bilder,  konnte ich mehr als beseitigen. BVASystem 2.0 ist zu einem sehr guten, schnellen Bildbetrachter geworden. Es gibt quasi keinen Tag an dem ich es nicht verwende.

Datenbanktechnisch bin ich nicht ganz so weit gekommen, das es sich lohnen würde das Programm zur Verwaltung seiner Bilder einzusetzen. Es wurde nur geschafft, den Import von Bildern in die Datenbank zu implementieren. Dies aber auf einer Art und Weise, die viel komfortabler ist als im alten Programm. Und durch den Worker wurde ein System geschaffen, mit dem Änderungen am Datenbestand fast unsichtbar für den Anwender durchgeführt werden können.

Die erste Version, die im neuen Jahr veröffentlich wird, wird eine Worker-Funktion beinhalten, die den Orientierungssinn von Datenbankbildern speichert. Wird ein Datenbankbild gedreht, so wird automatisch gleichzeitig ein Workertask erstellt. Soll das Bild dann später wieder angezeigt werden, so wird es gleich wieder gedreht. Natürlich ohne das an der Bilddatei etwas geändert wird.

Für das neue Jahr habe ich mir vorgenommen, weiterhin mit dem bestehenden System weiterzuentwickeln. Ich möchte ungefähr alle 2 bis 3 Wochen eine neue Version hier auf die Homepage stellen. Schwerpunkttechnisch wird die Entwicklung stärker in Richtung Datenbank gehen, da dort ja noch weit mehr fehlt als beim Bildbetrachtermodul. Aber auch der Bildbetrachter wird die eine oder andere Verbesserung erfahen, da mir durch den täglichen Einsatz sicher noch ein paar Ideen kommen werden. Die genaue Roadmap für die nächsten 2-3 Versionen werde ich in den nächsten Tagen in den Bugtracker eintragen. Lasst euch also ein klein wenig überraschen, was in den nächsten Versionen kommen wird.

In diesem Sinne, kommt gut ins neue Jahr und ich hoffe auf ein Wiedersehen spätestens beim nächsten Programmupdate.

Aufgaben für den Worker

Montag, November 8th, 2010

Im letzten Blogpost hatte ich es bereits angekündigt, mit der Version 2.0.0.11 sollten die Aufgaben für den Worker hinzukommen. Und genau das ist bis zum heutigen Tag geschehen. Ich muss zugeben, die neue Version ist diesmal eher etwas für neugierige Tester. Die Aufgaben sind zwar fertig programmiert, aber ihre Einbettung in die Oberfläche muss dringend noch verbessert werden. Ich habe mich aber dafür entschieden, die Version hier trotzdem so zur Verfügung zu stellen, da ich ansonsten mein gewolltes Veröffentlichungsraster nicht einhalten könnte.

Es gibt nun einen Automatismus zum Datenimport von Bildern in die Datenbank, den der Anwender in der Toolbar an und ausschalten kann. Bei aktivem Automatismus werden, nachdem auf ein Verzeichnis mit Bildern geklickt wurde, alle Bilder im Worker als Aufgaben eingestellt. Dieser arbeitet die Aufgaben nach und nach ab, speichert die Bilder also in der Datenbank. Fehlen tut hier noch, das vor dem Einfügen des Bildes überprüft wird, ob dieses sich bereits in der Datenbank befindet: siehe Bugtracker Meldung 101

Als zweite Workeraufgabe habe ich das Löschen von Bildern umgesetzt. In einem Popupmenü über der Bildliste befindet sich der Eintrag zum Löschen. Die Funktion ist sowohl für Dateien auf der Festplatte, als auch für Dateien in der Datenbank möglich. Aber Vorsicht, es erscheint keinerlei Sicherheitsabfrage. Wenn löschen geklickt wird, wird auch gelöscht. Was beim Löschen noch fehlt, ist das die Programmoberfläche anschließend aktualisiert wird. Das gelöschte Bild muss aus der Liste entfernt werden und die darunterliegende Scrollbar angepasst werden: siehe Bugtracker Meldung 102

Fazit: Auch wenn in den letzten Wochen einiges an Software entstanden ist, so bleibt noch eine ganze Menge zu tun.

Der nächste Meilenstein

Donnerstag, Oktober 7th, 2010

Mit dem heutigen Tag ist wieder ein Meilenstein in der Entwicklung des BVASystems erreicht. Die Version 2.0.0.8 kann, wie immer, unter Download herruntergeladen werden. Vor wenigen Tagen berichtete ich, warum es wichtig ist, eine klare Trennung zwischen Oberfläche und den eigentlichen Daten herzustellen. Diese Trennung ist nun komplett umgesetzt. Der letzte direkte Zugriff der Oberfläche auf die Daten ist entfernt, alles läuft nun, so wie gewünscht, über die Datenschicht.

Gestern abend habe ich weiterhin die Roadmap für die nächsten 3 Entwicklungsetappen abgesteckt. Die nächste Version wird für mich etwas zum verschnaufen sein, denn ich will dort nur Änderungen an der Oberfläche vornehmen. Die Änderungen sollten nicht sonderlich kompliziert werden. Aber wenn sie gemacht sind, stärkt es die Bildbetrachter-Funktionen des BVASystems.

Anschließend kommt wieder etwas komplizierteres, welches ich in 2 Etappen umsetzen möchte. Ich möchte dann ein Modul schaffen, das für alle Änderungen am Datenbestand zuständig sein soll. Das Modul soll als Thread im Hintergrund der Anwendung laufen. Damit ist es zum Beispiel möglich, das während sich der Anwender Bilder anschaut, diese automatisch in der Datenbank aufgenommen werden.  Oder aber das Programm löscht, im Hintergrund, die vom Nutzer markierten Bilder, während er sich schon wieder andere Bilder anschaut.

Nachdem die 3 Etappen erreicht sind, habe ich einen schönen abgeschlossenen Prototypen erreicht, der dann wirklich als Bilddatenbank benützt werden kann.  Vor allem wäre dann der letzte „Testbutton“ aus dem Programm wieder entfernt.