利用图片中的exif元数据批量查找图片中所包含的GPS信息
2017-06-14 20:37
302 查看
在图片的exif(交换图像文件格式)中标准定义了如何存储图像和音频文件的标准,而在这些标签中往往存在了一些容易被人们忽视却又重要的东西。
有一款工具名为exiftool,可以快速的解析所有标签,并将结果显示出来。
在ubuntu中可以这样下载: apt-get install exiftool
然后我们用它来解析某张图片
而当图片数量很多的情况下,批量处理显然成为了一个难题。所以python就成了最好的工具。
此代码只处理了1.jpg 2.jpg 3.jpg 这三张图片, 而我们要在这些图片的解析结果中找到关于gps的定位信息。
显然结果只有图片二存在gps定位信息。
from PIL import Image
from PIL.ExifTags import TAGS
def demo(name):
exifdata = {}
imgfile = Image.open(name)
info = imgfile._getexif()
if info:
for (tag, value) in info.items():
#print str(tag) + ' : ' + str(value)
decoded = TAGS.get(tag, tag)
#print str(decoded)
exifdata[decoded] = value
exifgps = exifdata['GPSInfo']
if exifgps:
print 'it has founded ; ' + str(name) + " " + str(exifgps)
def main():
for i in range(1, 4):
s = str(i) + '.jpg'
demo(s)
if __name__=='__main__':
main()
有一款工具名为exiftool,可以快速的解析所有标签,并将结果显示出来。
在ubuntu中可以这样下载: apt-get install exiftool
然后我们用它来解析某张图片
而当图片数量很多的情况下,批量处理显然成为了一个难题。所以python就成了最好的工具。
此代码只处理了1.jpg 2.jpg 3.jpg 这三张图片, 而我们要在这些图片的解析结果中找到关于gps的定位信息。
显然结果只有图片二存在gps定位信息。
from PIL import Image
from PIL.ExifTags import TAGS
def demo(name):
exifdata = {}
imgfile = Image.open(name)
info = imgfile._getexif()
if info:
for (tag, value) in info.items():
#print str(tag) + ' : ' + str(value)
decoded = TAGS.get(tag, tag)
#print str(decoded)
exifdata[decoded] = value
exifgps = exifdata['GPSInfo']
if exifgps:
print 'it has founded ; ' + str(name) + " " + str(exifgps)
def main():
for i in range(1, 4):
s = str(i) + '.jpg'
demo(s)
if __name__=='__main__':
main()
相关文章推荐
- 利用图片中的exif元数据批量查找图片中所包含的GPS信息
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用commons-fileupload 上传图片(包含表单数据
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用 python 对文件夹下图片数据进行批量改名
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用commons-fileupload 上传图片(包含表单数据)
- 利用javascript从数据库取数据来实现CSDN首页图片的切换效果
- 利用XML实现数据的批量查询
- 利用Hibernate往SqlServer里存入图片或二进制数据
- 今晚我最得意之作——利用Oracle超级无敌强大函数生成“批量生成数据语句”!
- 利用序列插入批量数据
- 利用Ajax生成ProgressBar:实现同类大批量数据批量生成Html,并实时显示进度条,可查看处理日志
- (非常小的技巧)利用范型List存储数据并通过Contains查询字符串是否包含在范型中
- 利用“contentEditable” + jQuery 批量更新数据
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 利用MIME导出多sheet的excel(包含图片)
- 利用SQL语句查找某数据库中所有存储过程包含的内容