Schnelles Taggen von vielen Bildern

vorhergehende Artikel in: Java Komponenten
11.10.2015

Ich musste (oder wollte) neulich einen größeren Schwung Bilder sortieren. Nach diversen Gedankenspielen, wie so etwas besonders schnell gehen könnte, kam ich wieder einmal bei Tags oder Verschlagwortung an. Aber das Werkzeugangebot, das ich vorfand, war nichts für mich. Und nach dem alten immer noch wahren Spruch "Fehlt Dir was? Programmiers Dir doch!" ging ich ans Werk...

Problem

Diese Idee entsprang einem wirklichen Bedarf: ich hatte ungefähr anderthalb Tausend Bilder vor mir und musste sie eigentlich nur in zwei Verzeichnisse aufteilen. Das Verhältnis war etwa 2 Drittel zu einem Drittel - das wusste ich aber nicht, bevor ich nicht alle gesehen hatte.

Man könnte das natürlich über einen Dateimanager mit Miniaturansicht abwickeln, aber gegebenenfalls 1000 Bilder gleichzeitig markiert zu halten oder alternativ 100 mal 10 Stück zu markieren und dann Strg-C und Strg-V - schon der Gedanke erschreckte mich.

Idee

Also überlegte ich folgendes: Wenn man ein Werkzeug finden könnte, das in einem Ordner (oder rekursiv in mehreren) immer ein Bild anzeigt, könnte man jeweils zum Beispiel 1 oder 2 auf der Tastatur drücken - die beiden Tasten stünden dann für die Sortierung in den einen oder anderen Ordner. Danach würde automatisch das nächste Bild geladen usw.

Dann dachte ich: wenn man das Bild geladen hat, könnte man darüber (darunter oder darum,...) Tags anordnen und dann die auswählen, die dem Bild zugeordnet werden sollen. Fände man eine interessante Variante, diese Auswahl Tastatur-gestützt vorzunehmen, könnte man jeweils mit Enter die Tags am aktuellen Bild speichern und zum nächsten Bild fortschreiten. Dazu müsste man nicht einmal die Maus bemühen. Das ist auch der Hauptkritikpunkt bei allen Werkzeugen, die ich bisher benutzt habe: zu viel Mausintegration.

Meist will man doch größere Bestände auf einmal verschlagworten - wenn man da für jedes einzelne Bild einmal den kompletten Bildschirm mit der Maus abfahren muss (und vielleicht - mein persönlicher Favorit - dazu noch in obskuren Listen scrollen muss, um die passenden Tags überhaupt zu finden), dann macht es spätestens nach dem 50. Bild keinen Spaß mehr.

Wenn man aber 30 oder 40 Tags auf die Tasten der Tastatur mappen kann und nur noch Tasten drücken muss - kein einziges Mal die Maus schubsen - dann würde das doch extrem produktiv sein?

Dazu lassen sich gleich noch einige interessante Interaktionsmetaphern generieren: hierarchische Tags würden sich so abbilden lassen: Wir nehmen zunächst an, dass ich 10 Tags habe. Einige davon sind die Wurzeln einer Hierarchie: Es gibt zum Beispiel Tier.Hase, Tier.Elefant und Tier.Katze. Diese würden nicht auf drei der Tasten abgebildet, sondern es würde zunächst nur eine mit "Tier" belegt sein. Nach Druck der Taste würden alle Tastenbelegungen gelöscht und statt dessen würden drei der Tasten auf Elefant, Hase und Katze gemappt. Nach Druck auf die Taste für Katze würde - da festgestellt würde, dass es sich hier um einen Blattknoten der Hierarchie handelt, das Tag Tier.Katze zum Bild hinzugefügt und die ursprünglichen Tastaturmappings wiederhergestellt.

Umsetzung

metadata-extraktor

Mein erster Versuch der Umsetzung geschah mittels metadata-extractor - ein Fehlschlag. Nachdem ich festgestellt hatte, dass ich zum ersten mal wirklich mit der Dependency Hell in Java in Berührung kam (Das System funktionierte nur mit einer mitgelieferten Version der XMP-Bibliothek - dann aber nciht richtig, weswegen ich genau diese Version direkt von Adobe holen, patchen und anschließend selbst übersetzen musste), stellte ich fest, dass ich mich gar nicht so sehr hätte anstrengen müssen: Das System gestattet nur das Auslesen, nicht aber das Schreiben von Metadaten.

exiftoool

Also ging ich wieder zurück und tat das, was jeder gute Unix-Jünger tut: Kombinieren von kleinen Anwendungen, die exakt eine Sache tun, diese dafür aber richtig. exiftool ist eine Anwendung, die unter Linux mit den verschiedenen Metadaten umgehen kann, die man in multimediadateien antreffen kann.

Also testete ich ein wenig: Alles sah erfolgversprechend aus: Ich konnte Tags setzen löschen, modifizieren, hinzufügen - wunderbar! Dann versuchte ich das Ganze mit PNG-Dateien - vorher hatte ich JPEGs getestet. Plötzlich ging nichts mehr: Die Tests führte ich mit dem Tag Keywords aus. Bei den PNGs konnte ich machen was ich wollte: was einmal in den Keywords stand konnte ich nicht mehr beeinflussen. Nachdem ich kurz vor der Verzweiflung stand, öffnete ich das Testbild in gThumb und siehe da: meine Änderungen standen drin! Ich rieb mir die Augen und recherchierte weiter: es existiert die Angabe Keywords und darüber hinaus auch XMP:Keywords und ITPC-Keywords. Bei PNGs ist es so, dass, wenn man nur Keywords angibt, beim Schreiben das eine und beim Lesen das andere angenommen wird - daher die Erfolgsmeldungen beim Schreiben und die scheinbar unveränderten Werte beim Auslesen.

Nachdem ich dies nun weiß, habe ich mich entschlossen, die eigentliche Entwicklung des Werkzeugs ein wenig zu verschieben: in nicht mal 10 Stunden geht die neue Arbeitswoche los...

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.