web-dev-qa-db-ja.com

PILを使用してEXIFデータから写真が撮影された日時を取得する

画像からEXIFデータを取得する PILを使用しますが、写真が撮影された日時を取得するにはどうすればよいですか?

25
sashoalm

最終的に答えを見つけた、私が必要なタグは 6867

from PIL import Image
def get_date_taken(path):
    return Image.open(path)._getexif()[36867]
40
sashoalm

exif-pyを使用したいのは、純粋なpythonであり、コンパイル/インストールを必要とせず、python 2.xおよび3.xの両方で動作するため、小規模なバンドルに最適ですポータブルpythonアプリケーション。

リンク: https://github.com/ianare/exif-py

写真が撮影された日付と時刻を取得する例:

import exifread
with open('image.jpg', 'rb') as fh:
    tags = exifread.process_file(fh, stop_tag="EXIF DateTimeOriginal")
    dateTaken = tags["EXIF DateTimeOriginal"]
    return dateTaken
12
Alecz
try:
    import PIL
    import PIL.Image as PILimage
    from PIL import ImageDraw, ImageFont, ImageEnhance
    from PIL.ExifTags import TAGS, GPSTAGS
except ImportError as err:
    exit(err)


class Worker(object):
    def __init__(self, img):
        self.img = img
        self.get_exif_data()
        self.date =self.get_date_time()
        super(Worker, self).__init__()

    def get_exif_data(self):
        exif_data = {}
        info = self.img._getexif()
        if info:
            for tag, value in info.items():
                decoded = TAGS.get(tag, tag)
                if decoded == "GPSInfo":
                    gps_data = {}
                    for t in value:
                        sub_decoded = GPSTAGS.get(t, t)
                        gps_data[sub_decoded] = value[t]

                    exif_data[decoded] = gps_data
                else:
                    exif_data[decoded] = value
        self.exif_data = exif_data
        # return exif_data 

    def get_date_time(self):
        if 'DateTime' in self.exif_data:
            date_and_time = self.exif_data['DateTime']
            return date_and_time 


def main():
    date = image.date
    print(date)

if __name__ == '__main__':
    try:
        img = PILimage.open(path + filename)
        image = Worker(img)
        date = image.date
        print(date)

    except Exception as e:
        print(e)
3
Kireal

キー 'DateTimeOriginal'を使用して_getexif()によって返された辞書から?

0
tpatja