qt c++ 照片添加exif信息_千万不要在朋友圈发“原图”,不然你的信息分分钟泄露(一)…

  • Post author:
  • Post category:其他


你与陌生人之间,

可能只是一张照片的距离。

有时候一张“原图”照片,

分分钟就暴露了你的信息…

很多朋友喜欢在朋友圈晒各种图片,美食、旅游、自拍,殊不知这些朋友在晒照片时,已经将自己的信息泄露出去了,特别是将自己家里拍的照片晒到朋友圈时,家庭住址信息暴露无遗,让非法之徒有了可乘之机。粗心的父母们发出孩子照片,给了人贩子可趁之机。

这背后是什么原理呢?

因为你将原图晒到了朋友圈。

今天我们就来说一说“原图”背后的东西,以及如何通过技术手段获取原图的定位信息。

原来,现在任何智能手机拍摄的照片,都含有一个叫

Exif

参数的东西。

它还包括光圈、快门、ISO、白平衡、日期时间等各种图像数据,最关键的一项是,位置信息。

如果没有经过人为处理,这些图片的Exif参数会一直存在。

拍照时因为软件调用了Exif中的GPS全球定位系统数据,这些来自于手机内部的传感器以及陀螺仪的数据,把拍照时的位置时间等一点不差地记录了下来。于是在朋友圈po的照片,完整展示了一天的踪迹,也就不难解释。那么,如何通过技术手段实现定位信息的抓取呢,来来来让我们一起看下实现方式:

from PIL import Image
from PIL.ExifTags import TAGS
​
​
def get_exif_data(fname):  # 该函数定义了如何从照片原图中获取EXIF信息
    ret = {}
    try:
        img = Image.open(fname)
        if hasattr( img, '_getexif' ):
            exifinfo = img._getexif()
            if exifinfo != None:
                for tag, value in exifinfo.items():
                    decoded = TAGS.get(tag, tag)
                    ret[decoded] = value
    except IOError:
        print('IOERROR ' + fname)
    return ret
  
  
fileName= '请输入文件路径'
if __name__ == '__main__':
    exif = get_exif_data(fileName)
    for key, value in exif.items():
        if key == 'GPSInfo':
            TD = exif[key]
            print(TD)

运行上述代码,得到以下结果:{1: ‘N’, 2: ((31, 1), (11, 1), (34, 1)), 3: ‘E’, 4: ((121, 1), (29, 1), (38, 1)), 7: ((1, 1), (49, 1), (7, 1)), 29: ‘2020-03-11′}翻译一下,就是照片拍摄地的维度为:31°11′ 34″ ,经度为:121°29’ 38″

将上述经纬度信息,调用百度或高德地图API,就能转换成地址啦,如何调用及转化,将在下一篇文章中做详细说明。

友情提醒:经过美图的照片依然会显示位置信息:

不要随意在网上po出原图照片,

同时谨慎开启APP里的定位功能。

如果大家喜欢我的文章,请添加关注公众号(二帮主做IT审计),你们的关注和赞赏,是我不断更新的动力。

http://weixin.qq.com/r/_zl5YfbEe6sErbIC92zp (二维码自动识别)