python利用PIL库读取图片的EXIF信息
发布时间:2020-12-17 17:26:34 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 ? # -*- coding: Windows-1251 -*-'''rename_to_exiftime.pyRename JPEG files according to EXIF-date using PILIf global variable CREATE_HARDLINK
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
?
# -*- coding: Windows-1251 -*- ''' rename_to_exiftime.py Rename JPEG files according to EXIF-date using PIL If global variable CREATE_HARDLINK is set,script creates Windows (XP) batch file for creating hardlink version of source files Author: Denis Barmenkov <[email?protected]> Modified by: Jorge Barnaby <[email?protected]> Improved rename process on duplicates Copyright: this code is free,but if you want to use it,please keep this multiline comment along with function source. Thank you. 2009-02-10 18:14 ''' import Image import os import re import sys import time CREATE_HARDLINK=0 def extract_jpeg_exif_time(jpegfn): if not os.path.isfile(jpegfn): return None try: im = Image.open(jpegfn) if hasattr(im,'_getexif'): exifdata = im._getexif() ctime = exifdata[0x9003] #print ctime return ctime except: _type,value,traceback = sys.exc_info() print "Error:n%r",value return None def get_exif_prefix(jpegfn): ctime = extract_jpeg_exif_time(jpegfn) if ctime is None: return None ctime = ctime.replace(':','') ctime = re.sub('[^d]+','_',ctime) return ctime def rename_jpeg_file(fn): if not os.path.isfile(fn): return 0 ext = os.path.splitext(fn)[1].lower() if ext not in ['.jpg','.jpeg','.jfif','.nef','.png']: return 0 path,base = os.path.split(fn) #print base # status prefix = get_exif_prefix(fn) if prefix is None: print '%s could not be renamed' % (base) return 0 if base.startswith(prefix): print '%s file already renamed' % (base) return 0 # file already renamed to this prefix exists = True index = 0 while exists: if index == 0: new_name = prefix + ext # + '_' + base else: new_name = prefix + '_' + str(index) + ext new_full_name = os.path.join(path,new_name) exists = os.path.isfile(new_full_name) index = index + 1 if CREATE_HARDLINK: f = open('CREATE_HARDLINK.cmd','a') f.write('fsutil hardlink create "%s" "%s"n' % (new_full_name,fn)) f.close() else: try: os.rename(fn,new_full_name) print '%s renamed to %s' % (base,new_name) except: print 'ERROR rename %s --> %s' % (fn,new_full_name) return 0 return 1 def rename_jpeg_files_in_dir(dn): names = os.listdir(dn) count=0 for n in names: file_path = os.path.join(dn,n) count += rename_jpeg_file(file_path) return count if __name__=='__main__': try: path = sys.argv[1] except IndexError: print '''Usage: rename_to_exiftime.py filename.[jpeg|jpg|jfif] or rename_to_exiftime.py dirname ''' sys.exit(1) if os.path.isfile(path): rename_jpeg_file(path) elif os.path.isdir(path): count = rename_jpeg_files_in_dir(path) print '%d file(s) renamed.' % count else: print 'ERROR: path not found: %s' % path PIL 库下载地址: http://www.pythonware.com/products/pil/ 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |