python利用PIL库读取图片的EXIF信息
发布时间:2020-05-24 23:33:55 所属栏目:Python 来源:互联网
导读:python利用PIL库读取图片的EXIF信息
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 # -*- 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 <[emailprotected]>
Modified by: Jorge Barnaby <[emailprotected]>
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/ 以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
