Python: jpg定位篇
Admin Lv3

热知识,一些数码相机拍照时会记录照片的一些拍摄数据,并以Exif格式附加到生成的jpg文件中,那么…

定位

我们可以用Python检查一张照片里有没有敏感数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python3

import exifread
import argparse
import re, os

def analyze_image(imagePath):
with open(imagePath, 'rb') as imageFile:
metadata = exifread.process_file(imageFile)
print(f'经度: {metadata.get("GPS GPSLongitude", "无")} {metadata.get("GPS GPSLongitudeRef", "")}')
print(f'纬度: {metadata.get("GPS GPSLatitude", "无")} {metadata.get("GPS GPSLatitudeRef", "")}')
print(f'海拔: {metadata.get("GPS GPSAltitude", "无")} {metadata.get("GPS GPSAltitudeRef")}')
print(f'拍摄时间: {metadata.get("Image DateTime", "无")}')
print(f'图像描述: {metadata.get("Image ImageDescription", "无")}')
return

def main():
parser = argparse.ArgumentParser(description="Display jpg metadata")
parser.add_argument('imagePath', type=str, help='image path')
args = parser.parse_args()
analyze_image(args.imagePath)
return

if __name__ == "__main__":
main()

把去年用iphone拍摄的一张照片传入

1
./prog image.jpg

回显

1
2
3
4
5
经度: [118, 26, 2339/50] W
纬度: [34, 3, 4619/100] N
海拔: 48521/476 0
拍摄时间: 2023:06:23 19:51:48
图像描述: 无

不给定位

对于大部分手机来说,防止其自动加上这些敏感数据的方法很简单 – 不给拍照App定位的权限就可以了;对于已经拍摄了的照片,可以对其截图代替原片达到抹除Exif数据的效果