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 相关文章推荐
python cookielib 登录人人网的实现代码
Dec 19 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
python检测某个变量是否有定义的方法
May 20 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python进阶之@property动态属性的实现
Apr 01 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
Python requests上传文件实现步骤
Sep 15 Python
python获取命令行参数实例方法讲解
Nov 02 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
在Django中实现添加user到group并查看
2019/11/18 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
枚举与#define宏的区别
2014/04/30 面试题
地理科学专业毕业生求职信
2013/10/15 职场文书
给男朋友的道歉信
2014/01/12 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
消防演习感想
2015/08/10 职场文书
关于做家务的心得体会
2016/01/23 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
品德与社会教学反思
2016/02/24 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
win10更新失败无限重启解决方法
2022/04/19 数码科技
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技
python的html标准库
2022/04/29 Python