Seite 1 von 1

ein Problem mit IPTCInfo

Verfasst: Freitag 19. Januar 2018, 19:02
von muscat
hallo,

wollte mir eine Slideshow mit IrfanView erstellen. Die txt datei für IrfanView möchte mit Python erstellen.
Dazu wollte ich mit IPTCInfo die Orte aus der IPTC des Bildes übernehmen, um z.B. eine sliceshow nach Orten zu erstellen.
Leider komme ich mit dem IPTC Modul nicht klar.
Obwohl im IPTC die Orte eingetragen sind, erhalte ich bei jedem Bild den Warnhinweiß
File not a JPEG, trying blindScan
es handelt sich natürlich um jpg - Dateien. Ich habe auch JPEG versucht.
der blindScan bringt dann sehr unregelmäßig die Ortsdaten. Bei den meisten wird NONE ausgegeben.

Code: Alles auswählen


from iptcinfo import IPTCInfo
import sys, os

path = "c:/temp/"
f = open(path + "slide01.txt","w")


for (path, dirs, files) in os.walk(path):
    for file in files:        
        if (str(file)[-3:]) == "jpg":
            t = (os.path.join(path, file))
            info = IPTCInfo(t, force=True)
            string = " ".join((str(t), str(info.data[25]),str(info.data[92]),str(info.data[95]),str(info.data[101]),"\n"))
            f.write (string)
            print (string)
f.close


Re: ein Problem mit IPTCInfo

Verfasst: Freitag 19. Januar 2018, 20:07
von Sirius3
@muscat: ohne konkrete Fehlermeldung in Bilddateien kann man da wenig sagen.
Zum Programm:
Zeile 6: Pfade setzt man mit os.path.join zusammen.
Zeile 11: `file` ist schon ein String, der `str` aufruf ist unnötig. Die Endung bekommt man mit os.path.splitext
Zeile 12: `t` ist ein schlechter Variablenname für einen Dateinamen, die äußeren Klammern sind überflüssig.
Zeile 14: einen String aus expliziten Werten erzeugt man mit .format und nicht mit join. Dann sind auch die ganzen str-Aufrufe überflüssig.
Zeile 17: close sollte man auch aufrufen.