The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon

Der Exif Check dei­ner Bil­der für die Ver­wen­dung von dyna­mi­schen Play­lis­ten

-

Du woll­test schon immer die Mög­lich­keit haben, die Bil­der auf dei­nem Foto­rah­men ein­fach nach Datum fil­tern zu kön­nen?

Du kommst gera­de aus dem Urlaub zurück und willst jetzt erst­mal die Bil­der der letz­ten drei Wochen sehen, um noch etwas in Feri­en­stim­mung zu schwel­gen?

Dein Nach­wuchs wird heu­te 10 Jah­re alt, und du möch­test nur die Bil­der im Wohn­zim­mer anzei­gen, die jeweils an sei­nen Geburts­ta­gen gemacht wur­den?

Die Infor­ma­ti­on, wann ein Bild auf­ge­nom­men wur­de ver­steckt sich in den Exif Meta­da­ten einer JPG Datei. In die­sem Arti­kel stel­le ich dir ein Python 3 Skript vor, was dei­ne Foto­samm­lung auf die Voll­stän­dig­keit der Exif Datums­an­ga­ben prüft, damit du sie spä­ter für Fil­ter­funk­tio­nen nut­zen kannst.

Der digi­ta­le Fuß­ab­druck dei­ner Bil­der

Die älte­ren Semes­ter erin­nern sich viel­leicht noch an frü­he­re Kame­ras, die einen Datums­stem­pel auf den Bil­dern hin­ter­lie­ßen. Ich fand damals, dass das ein Bild so ziem­lich rui­niert, aber eini­ge Mar­ke­­ting-Chefs in Japan waren da wohl ande­rer Mei­nung.

Glück­li­cher­wei­se ist das in der digi­ta­len Zeit kein The­ma mehr, da wir heu­te die Daten spei­chern kön­nen, ohne dass sie auf dem Bild auf­tau­chen.

Bei jeder Auf­nah­me mit einer Digi­tal­ka­me­ra oder Han­dy, wer­den, neben den Bild­da­ten, eine Rei­he von Infor­ma­tio­nen gespei­chert. Das sind unter ande­rem die Exif Daten, die Anga­ben wie Datum, Seri­en­num­mern der Kame­ra und des Objek­tivs, Blen­den, Ver­schluss­zei­ten oder die Art des Weiß­ab­gleichs ent­hal­ten.

Nur ein Teil der Exif Daten eines digi­ta­len Fotos

Dane­ben gibt es GPS Orts­da­ten und IPTC Meta­da­ten, die Infor­ma­tio­nen wie Copy­right und Schlag­wör­ter ent­hal­ten, die ent­we­der manu­ell in Ado­be Ligh­troom oder auto­ma­tisch wie z.B. durch Gesichts­er­ken­nung des Han­dys hin­zu­ge­fügt wer­den.

IPTC Daten mit Schlag­wör­tern, Urhe­ber- und Orts­an­ga­ben

Gera­de beim Arbei­ten mit vie­len tau­send Bil­dern hel­fen die­se Infor­ma­ti­on unge­mein, den Über­blick zu bewah­ren.

Aber man kann damit auch smar­te, oder wie es auch heißt, dyna­mi­sche Play­lis­ten erstel­len, die Bil­der nach gewis­sen Kri­te­ri­en fil­tern.

Smar­te Play­lis­ten

Bei einem digi­ta­len Bil­der­rah­men bie­ten sich Fil­ter auf Datum, Per­so­nen, Orte und ande­re Schlag­wör­ter an.

Die Exif Infor­ma­ti­on geht manch­mal wäh­rend der Bild­be­ar­bei­tung ver­lo­ren.

Das geschieht oft aus Grün­den der Platz­ein­spa­rung, auch wenn der Unter­schied nur bei rund einem Pro­zent liegt und damit nicht ins Gewicht fällt.

In einem für Ende Som­mer 2019 kom­men­den Update für den von mir gelieb­ten Pi3D Bild­be­trach­ter (der mit den wun­der­schö­nen Kreuz­über­blen­dun­gen), wird es die Mög­lich­keit geben, Bil­der nach dem Auf­nah­me­da­tum oder nach Zeit­räu­men ein­zu­gren­zen.

Denn, auch wenn eine sta­ti­sche Play­lis­te für kom­mer­zi­el­le Anwen­dun­gen sinn­voll ist, hal­te ich sie für die Nut­zung zuhau­se für gänz­lich unge­eig­net.

Ein digi­ta­ler Foto­rah­men ist ja nicht dafür gemacht, dass man zehn Minu­ten davor steht und sich die Bil­der anschaut, son­dern eher wan­dert der Blick immer mal wie­der zufäl­lig dar­auf. Außer­dem wird es ja gera­de dadurch span­nend, wenn man nicht weiß, was als nächs­tes Bild erscheint und bei der lang­sa­men Über­blen­dung anfängt zu raten.

Außer­dem erfor­dern sta­ti­sche Play­lis­ten eine regel­mä­ßi­ge Pfle­ge, und das macht man in der Regel nicht.

Eine dyna­mi­sche Play­lis­te dage­gen aktua­li­siert sich von selbst, sobald neue Bil­der der Samm­lung hin­zu­ge­fügt wer­den.

Aber damit es so ein­fach gehen kann, müs­sen die Bild­da­tei­en die rich­ti­gen Daten ent­hal­ten.

Hier kommt das Python Skript ins Spiel. Um die Qua­li­tät der Exif Daten in dei­ner Foto­samm­lung zu über­prü­fen, habe ich ein Skript geschrie­ben, das in allen dei­nen Bil­dern, inklu­si­ve Unter­ver­zeich­nis­sen, prüft, ob ein gül­ti­ges Exif Datum vor­han­den ist.

Bei mei­ner Prü­fung führ­te das zur Fest­stel­lung, dass ich über drei Jah­re hin­weg, mei­ne Bil­der ohne Meta­da­ten aus Ligh­troom expor­tiert habe. War­um, weiß ich auch nicht mehr. Das führt aber eben dazu, dass sie von einem smar­ten Fil­ter nicht berück­sich­tigt wer­den.

Ich muss­te daher erst ein­mal einen neu­en Export aus Ligh­troom durch­füh­ren, bevor ich die Funk­tio­na­li­tät in einem aktua­li­sier­ten Pi3D Skript nut­zen konn­te. Durch das Skript konn­te ich sofort sehen, wel­che Ver­zeich­nis­se oder Ein­zel­bil­der betrof­fen waren und konn­te sie schnell fixen.

Wenn du also Ado­be Ligh­troom nut­zen soll­test, ach­te dar­auf, dass in den Export Ein­stel­lun­gen alle Meta­da­ten mit ein­ge­schlos­sen sind.

Beim Export in Ligh­troom muss "Alle Meta­da­ten" selek­tiert sein

Das Python 3 Skript zum Check des Exif Datums in dei­ner Foto­samm­lung

Die Ein­rich­tung ist sehr ein­fach.

Erstel­le eine neue Datei names "check_exif_date.py" und kopie­re den unten ste­hen­den Code hin­ein.

In Zei­le 48 spe­zi­fi­zierst du das Haupt­ver­zeich­nis, in dem gescannt wer­den soll. Ach­te auf die Groß- und Klein­schrei­bung dei­ner Pfad­an­ga­be.

  1. #!/usr/bin/env python3
  2.  
  3. """
  4. Script for scanning JPG's with invalid DATE in Exif
  5. Prerequisite: pip3 install exifread
  6. """
  7.  
  8. import os
  9. import exifread
  10.  
  11. def ScanInvalidExifDate(dirName):
  12.  
  13.     try:
  14.         #scan if current directory is accessible or not
  15.         #permission denied removal
  16.         CurrentDirectoryFiles = os.listdir(dirName)
  17.     except:
  18.         return
  19.  
  20.     #iterate over results of current direcotry files
  21.     for entry in CurrentDirectoryFiles:
  22.  
  23.         #create a full file path with dir + file name
  24.         filePath = os.path.join(dirName, entry)
  25.  
  26.         #check if full file path is another directory then recursively operate
  27.         if os.path.isdir(filePath):
  28.             ScanInvalidExifDate(filePath)
  29.  
  30.         #otherwise check if jpg and has valid exif date
  31.         else:
  32.             if (filePath.endswith(".jpg") or filePath.endswith(".jpeg")) and not (entry.startswith(".")) and not ".AppleDouble" in filePath:
  33.                 filePath= '/'.join(filePath.split('\\'))
  34.                 f = open(filePath, 'rb')
  35.                 tags = exifread.process_file(f)
  36.                 f.close()
  37.  
  38.                 #check if DATE exist in EXIF if not then print that file path
  39.                 try:
  40.                     tags['EXIF DateTimeOriginal']
  41.                 except:
  42.                     print(filePath)
  43.     return
  44.  
  45. if __name__=="__main__":
  46.     print("-------------------Invalid Valid Exif Date Finder-----------------------")
  47.     while True:
  48.         directoryStarting = "/home/pi/Pictures/your_photos/"
  49.         if os.path.exists(directoryStarting):
  50.             print("Directory Selected is :", directoryStarting)
  51.             print("---------Scanning-------------")
  52.             ScanInvalidExifDate(directoryStarting)
  53.             break
  54.         else:
  55.             print("Invalid Directory Entered")

Ver­schie­be die Datei in das Home Ver­zeich­nis dei­nes Rasp­berry Pi.

Bevor wir das Skript lau­fen las­sen kön­nen, müs­sen wir noch das exi­f­read Packa­ge instal­lie­ren.

Gib im Ter­mi­nal ein:

pip3 install exifread

Und um das Skript zu star­ten:

python3 exif_date_check.py

Das Ergeb­nis des Scans wird im Ter­mi­nal aus­ge­ge­ben. Damit kannst du dann die betrof­fe­nen Datei­en kor­ri­gie­ren und noch ein­mal frisch aus Ado­be Ligh­troom oder einem ande­ren Bild­be­ar­bei­tungs­pro­gramm raus­las­sen.

pi@pictureframe:~ $ python3 exif_date_check.py
-------------------Invalid Valid EXIF DATE Finder-----------------------
Directory Selected is : /home/pi/Pictures/Photos/
---------Scanning-------------
/home/pi/Pictures/Photos/2013/2013 Scotland/13W_6753.jpg
/home/pi/Pictures/Photos/2008/2008 South Africa/2008 South Africa - 0888.jpg
/home/pi/Pictures/Photos/2008/2008 South Africa/2008 South Africa - 1577.jpg
/home/pi/Pictures/Photos/2008/2008 South Africa/2008 South Africa - 0981.jpg
/home/pi/Pictures/Photos/2008/2008 South Africa/2008 South Africa - 1632.jpg

Was die Zukunft bringt

Die­ses Skript führt jetzt nur eine Prü­fung der Exif Daten dei­ner Bil­der­samm­lung durch. Das ist aber wich­tig, wenn du spä­ter Smart­lis­ten, die auf dem Datums-Tag basie­ren, nut­zen willst.

Es ist der ers­te Schritt eines grö­ße­ren Updates, das Pad­dy und ich mit dem Pi3D Bild­be­trach­ter vor­ha­ben.

Wir wol­len näm­lich zukünf­tig Smart­fil­ter auf Exif und IPTC Daten erlau­ben. Das wür­de dann einen Fil­ter auf Datum, Orte, Per­so­nen oder ande­re Schlüs­sel­wör­ter ermög­li­chen.

Und wenn man dann noch wei­ter geht, wür­de man all die­se Fil­ter ganz ein­fach über Ale­xa oder Google Home auf­ru­fen kön­nen. Wir sind ja faul und wol­len es ein­fach haben.

Eine auf­ge­räum­te und gepfleg­te Bil­der­samm­lung ist dafür aller­dings die Vor­aus­set­zung, und genau da setzt die­ses klei­ne Python Skript an.