Sh4n3e

[Python] PIL을 이용한 exif정보를 통해 JPG파일의 이름을 타임스탬프로 변경하기 본문

Programming/Python

[Python] PIL을 이용한 exif정보를 통해 JPG파일의 이름을 타임스탬프로 변경하기

sh4n3e 2017. 10. 29. 20:32

PIL을 이용하여 exif 정보를 가저온 후, 이 정보를 통해 JPG의 파일을 타임스탬프로 변경하는 프로그램이다.

exif내에 존재하는 타임스탬프 종류는 3가지로 다음과 같다.

1) DateTimeOriginal

2) DateTimeDigitized

3) DateTime


해당 이름 명이 존재하면 그 값을 가져다 return 해주어 이름을 바꿔주고

그외에 존재하지 않을 경우, 예외처리하여 바꾸지 않는 프로그램임.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#version 1.0
import os, sys
from PIL import Image
from PIL.ExifTags import TAGS
 
file_list = []
cnt = 0
 
def filelist(path):
    global file_list
    global cnt
 
    file_list = os.listdir(path)
    file_list.sort()
    cnt = len(file_list)
 
def get_exif(fn):
    ret = {}
    exifTimestamp = ''
    i = Image.open(fn)
    try :
        info = i._getexif()
        for tag, value in info.items():
            # DateTimeOriginal DateTimeDigitized DateTime
            decoded = TAGS.get(tag, tag)
            #print decoded
            ret[decoded] = value
        try :
            if ret['DateTimeOriginal'!= None:
                exifTimestamp = ret['DateTimeOriginal']
                return exifTimestamp
        except KeyError :
            print 'DateTimeOriginal Don\'t Exist'
        try :
            if ret['DateTimeDigitized'!= None:
                exifTimestamp = ret['DateTimeDigitized']
                return exifTimestamp
        except KeyError:
            print 'DateTimeDigitized Don\'t Exist'
        try :
            if ret['DateTime'!= None:
                exifTimestamp = ret['DateTime']
                return exifTimestamp
        except KeyError:
            print 'DateTime Don\'t Exist'
    except Exception as e :
        print e
    return exifTimestamp
 
 
 
if __name__ == '__main__':
    #path = '/Users/leekeezz/Desktop/picture/'
    path = raw_input('Input Path : ');
    filelist(path)
    for i in file_list:
        fname, ext = os.path.splitext(i)
        if ext != '.jpg' and ext != '.JPG' :
            continue
        forTimestamp = path + '/' + i
        print forTimestamp
        exifTimestamp = get_exif(forTimestamp)
        if exifTimestamp == '':
            print 'This file Don\'t Exist Timestamp'
        else :
            try:
                exifTimestamp = exifTimestamp.replace(':''_');
                os.rename(forTimestamp, path + '/' + exifTimestamp + '.JPG')
            except os.error:
                print 'error %s' % forTimestamp
        print '\n'
 
cs


Comments