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生成随机验证码(中文验证码)示例
Apr 03 Python
python生成词云的实现方法(推荐)
Jun 13 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
python图像处理入门(一)
Apr 04 Python
python将视频转换为全字符视频
Apr 26 Python
python实现简单井字棋小游戏
Mar 05 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 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
聊天室php&amp;mysql(四)
2006/10/09 PHP
php命令行写shell实例详解
2018/07/19 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
python中反射用法实例
2015/03/27 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Python while 循环使用的简单实例
2016/06/08 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python爬虫之百度API调用方法
2017/06/11 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python实现接口并发测试脚本
2019/06/25 Python
Python Web版语音合成实例详解
2019/07/16 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
基于Python正确读取资源文件
2020/09/14 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
护士实习自我鉴定
2013/10/22 职场文书
庆元旦广播稿
2014/02/10 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
Mysql Online DDL的使用详解
2021/05/20 MySQL