Получение данных EXIF ​​из нескольких изображений в папке - PullRequest
0 голосов
/ 02 апреля 2019

Я создал функцию, которая использует PIL для извлечения всех данных EXIF ​​в изображении, затем мне нужно изменить код, чтобы я дал программе папку, полную изображений, и код должен извлекать данные EXIF ​​из каждого изображение внутри и вывод в файл. Я не уверен, как это сделать.

Я попытался использовать цикл for в моей функции, надеясь, что он будет перебирать заданные изображения и возвращать их одно за другим, но мне не повезло.

import argparse
from PIL import Image
from PIL.ExifTags import TAGS

def getMetaData(imgname, out):
        try:
                metaData = {}

                imgFile = Image.open(imgname)
                print ("Getting meta data...")
                info = imgFile._getexif()
                if info:
                        print ("found meta data!")
                        for (tag, value) in info.items():
                            tagname = TAGS.get(tag, tag)
                            metaData[tagname] = value
                            if not out:
                                print (tagname, value)

                        if out:
                                print ("Outputting to file...")
                                with open(out, 'w') as f:
                                    for (tagname, value) in metaData.items():
                                            f.write(str(tagname)+"\t"+\
                                                    str(value)+"\n")
        except:
                print ("Failed")
def Main():
        parser = argparse.ArgumentParser()

        parser.add_argument("imageName", help="name of an image file.")
        print(parser)
        parser.add_argument("outputFile", help="dump data out to file")
        print(parser)
        args = parser.parse_args()

        if args.imageName:
                print("hello")
                getMetaData(args.imageName, args.outputFile)
        else:
                print (parser.usage)

if __name__ == '__main__':
        Main()
...