安装
sudo apt install -y libimage-exiftool-perl
常用命令
# 查看 Exif 信息:
exiftool media/images/django.jpg
exiftool -X media/images/django.jpg # XML 格式
exiftool -csv media/images/django.jpg # CSV 格式
exiftool media/images/
exiftool -r media/images/ # 递归遍历子目录
# 清除文件 Exif 信息:
exiftool -all= -overwrite_original media/images/django.jpg
exiftool -all= -overwrite_original media/images/
exiftool -all= -overwrite_original -ext png media/images/
# 清除指定 Exif 信息
exiftool -gps:all= *.jpg
关于 Exif
日本公司创造一项标准,为图片添加一些附加数据,比如相机的品牌型号,拍摄时的地理位置,光圈,曝光度等信息。
| ITEM | Notes |
|---|---|
| ApertureValue | - |
| Artist | - |
| BitsPerSample | - |
| BrightnessValue | - |
| ColorSpace | - |
| ComponentsConfiguration | - |
| CompressedBitsPerPixel | - |
| Contrast | - |
| Copyright | - |
| CustomRendered | - |
| DateTime | - |
| DateTimeDigitized | - |
| DateTimeOriginal | - |
| DigitalZoomRatio | - |
| ExifImageLength | - |
| ExifImageWidth | - |
| ExifOffset | - |
| ExifVersion | - |
| ExposureBiasValue | - |
| ExposureMode | - |
| ExposureProgram | - |
| ExposureTime | - |
| FileSource | - |
| Flash | - |
| FlashPixVersion | - |
| FNumber | - |
| FocalLength | - |
| FocalLengthIn35mmFilm | - |
| FocalPlaneResolutionUnit | - |
| FocalPlaneXResolution | - |
| FocalPlaneYResolution | - |
| GainControl | - |
| GPSAltitude | - |
| GPSAltitudeRef | - |
| GPSDateStamp | - |
| GPSInfo | - |
| GPSLatitude | - |
| GPSLatitudeRef | - |
| GPSLongitude | - |
| GPSLongitudeRef | - |
| GPSProcessingMethod | - |
| GPSTimeStamp | - |
| ImageDescription | - |
| ImageLength | - |
| ImageWidth | - |
| InteroperabilityOffset | - |
| LensMake | - |
| LensModel | - |
| LensSpecification | - |
| LightSource | - |
| Make | - |
| MakerNote | - |
| MaxApertureValue | - |
| MeteringMode | - |
| Model | - |
| OffsetTime | - |
| OffsetTimeDigitized | - |
| OffsetTimeOriginal | - |
| Orientation | - |
| PhotographicSensitivity | - |
| PhotometricInterpretation | - |
| PixelXDimension | - |
| PixelYDimension | - |
| PrintImageMatching | - |
| ResolutionUnit | - |
| SamplesPerPixel | - |
| Saturation | - |
| SceneCaptureType | - |
| SceneType | - |
| SensingMethod | - |
| SensitivityType | - |
| Sharpness | - |
| ShutterSpeedValue | - |
| Software | - |
| SubjectArea | - |
| SubjectDistanceRange | - |
| SubSecTime | - |
| SubSecTimeDigitized | - |
| SubSecTimeOriginal | - |
| thumbnail:BitsPerSample | - |
| thumbnail:Compression | - |
| thumbnail:ImageLength | - |
| thumbnail:ImageWidth | - |
| thumbnail:InteroperabilityIndex | - |
| thumbnail:InteroperabilityVersion | - |
| thumbnail:JPEGInterchangeFormat | - |
| thumbnail:JPEGInterchangeFormatLength | - |
| thumbnail:PhotometricInterpretation | - |
| thumbnail:ResolutionUnit | - |
| thumbnail:SamplesPerPixel | - |
| thumbnail:XResolution | - |
| thumbnail:YResolution | - |
| WhiteBalance | - |
| WinXP-Author | - |
| WinXP-Subject | - |
| WinXP-Title | - |
| XResolution | - |
| YCbCrPositioning | - |
| YResolution | - |
Python Exif 操作
import pprint
from PIL import Image, ExifTags
filepath = os.path.expanduser('~/Pictures/Photos/IMG_20180430_133154.jpg')
image = Image.open(filepath)
data_exif = image._getexif()
image.close()
data = {ExifTags.TAGS.get(k): v for k, v in data_exif.items()}
if 'GPSInfo' in data and isinstance(data['GPSInfo'], dict):
data['GPSInfo'] = {ExifTags.GPSTAGS.get(k): v for k, v in data['GPSInfo'].items()}
pprint.pprint(data)