Python实现自动为照片添加日期并分类的方法


Posted in Python onSeptember 30, 2017

本文实例讲述了Python实现自动为照片添加日期并分类的方法。分享给大家供大家参考,具体如下:

小时候没怎么照相,所以跟别人说小时候特别帅他们都不信。小外甥女出生了,我给买了个照相机,让她多照相。可惜他舅目前还是个?潘浚?蛄烁?00的?潘空障嗷??谷幻挥凶远?尤掌诘墓δ堋J粤思父鲂∪砑??疾缓糜茫?蟮耐枷袢砑?塾植换嵊谩I砦?桓黾扑慊?蒲в爰际踝ㄒ档难???荒茏粤⒏??恕?/p>

听说Python有个图形库,不错,在照片上打日期很容易,于是我就下了这个库。对Python不熟,一面看着手册一面写的。完成了下面的小程序,很简单。还不实用,我再修改一下,加上图形界面,并且将Python代码转换成exe,因为我要把程序给我姐用,所以要做到最傻瓜式。

(1)在相片右下角打印日期,格式类似于 2012-12-05 10:23:46

(2)以上面的日期为例,将原文件重命名为20121205102346.jpg,生成的文件命名为20121205102346DATE.jpg,并且放入文件夹20121205中,这样就可以把相片自动分类了。两个相片拍摄时间到秒数就应该不同了,除非是连拍。

代码(事先安装PIL库,http://www.pythonware.com/products/pil/)

import os,sys,shutil
from PIL import Image
from PIL import ImageDraw
from PIL.ExifTags import TAGS
from PIL import ImageFont
#open image file
if len(sys.argv) < 2:
    print "Usage: ",sys.argv[0]," ImageFile"
    sys.exit(1)
im = Image.open(sys.argv[1])
print 'Image size is:',im.size
#get the info dict
info = im._getexif()
#info store the information of the image
#it stores the info like this: [233:'name',2099:'2012:01:01 10:44:55',...]
#the key need to be decoded,
#This piece of code will extract the time when the photo is taken
for tag,value in info.items():
    decoded = TAGS.get(tag,tag)
    if decoded == 'DateTime':
        date = value
        break
#The date time is in this format '2012:01:01 10:44:22', replace the first two ":" with "-", need a writable list
date_list = []
for x in range(0,len(date)):
    date_list.append(date[x])
date_list[4] = '-'
date_list[7] = '-'
date = ''.join(date_list) #draw.text expect a string, convert it back to string
#the font size will be 1/15 of the images size
font = ImageFont.truetype("FZYTK.TTF",im.size[1] / 15)
draw = ImageDraw.Draw(im)
stringsize=draw.textsize(date,font=font)
print 'Text size is:',stringsize
#put the text to the right corner
draw.text((im.size[0]-stringsize[0],im.size[1]-stringsize[1]),date,fill=255,font=font)
#rename the source photo and the dated photo, eliminate the ':' and '-' and ' '
new_date_list = []
for x in range(0,len(date_list)):
    if date_list[x] != ':' and date_list[x] != '-' and date_list[x] != ' ':
        new_date_list.append(date_list[x])
date = ''.join(new_date_list[0:8])
time = ''.join(new_date_list[8:])
#print date
#print time
dir_name = ''.join(date)
src_filename = ''.join(new_date_list)
dst_filename = src_filename + 'DATE'
#print dir_name
#print src_filename
#print dst_filename
if not os.path.isdir(dir_name):
    os.makedirs(dir_name)
path = dir_name + '/' + dst_filename +'.JPG'
#print path
im.save(path)
shutil.copy(sys.argv[1],dir_name+'/'+src_filename+'.JPG')

效果图如下:

Python实现自动为照片添加日期并分类的方法

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
python处理csv中的空值方法
Jun 22 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python实现自动登录
Sep 17 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
Python  lambda匿名函数和三元运算符
Apr 19 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 #Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 #Python
Python字符编码与函数的基本使用方法
Sep 30 #Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 #Python
深入浅出学习python装饰器
Sep 29 #Python
Python连接phoenix的方法示例
Sep 29 #Python
Python矩阵常见运算操作实例总结
Sep 29 #Python
You might like
6个超实用的PHP代码片段
2015/08/10 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
javascript 解析url的search方法
2010/02/09 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
React props和state属性的具体使用方法
2018/04/12 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
vue实现分页栏效果
2019/06/28 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python实现随机梯度下降法
2020/03/24 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
python爬虫可以爬什么
2020/06/16 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
python爬取youtube视频的示例代码
2021/03/03 Python
毕业生求职推荐信
2013/11/04 职场文书
超市促销活动总结
2014/07/01 职场文书
表扬稿格式范文
2015/01/16 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
MYSQL常用函数介绍
2022/05/05 MySQL