利用Pillow找出图片的拍摄时间及地点
时间: 2023-10-05 07:06:38 浏览: 120
Pillow是Python中一个强大的图像处理库,但是它并不能直接识别图片的拍摄时间和地点。要获取这些信息,需要借助其他的库和工具。
1. 使用ExifRead库获取拍摄时间和地点
ExifRead是一个Python库,用于解析图像文件的Exif(Exchangeable Image File)元数据。Exif元数据是存储在数字照片中的信息,包括拍摄时间、地点、相机型号、曝光时间、光圈值等。可以使用ExifRead库读取这些信息。
首先安装ExifRead库:
```
pip install exifread
```
然后使用以下代码获取拍摄时间和地点:
```python
import exifread
# 打开图片文件
with open('image.jpg', 'rb') as f:
# 读取Exif数据
exif_tags = exifread.process_file(f)
# 获取拍摄时间和地点
if 'Image DateTime' in exif_tags:
print('拍摄时间:', exif_tags['Image DateTime'])
if 'GPS GPSLatitude' in exif_tags and 'GPS GPSLongitude' in exif_tags:
latitude_ref = exif_tags['GPS GPSLatitudeRef'].values
latitude = exif_tags['GPS GPSLatitude'].values
longitude_ref = exif_tags['GPS GPSLongitudeRef'].values
longitude = exif_tags['GPS GPSLongitude'].values
lat = (latitude[0].num/latitude[0].den, latitude[1].num/latitude[1].den, latitude[2].num/latitude[2].den)
lon = (longitude[0].num/longitude[0].den, longitude[1].num/longitude[1].den, longitude[2].num/longitude[2].den)
lat = (lat[0] + lat[1]/60 + lat[2]/3600) * (-1 if latitude_ref == 'S' else 1)
lon = (lon[0] + lon[1]/60 + lon[2]/3600) * (-1 if longitude_ref == 'W' else 1)
print('拍摄地点:', lat, lon)
```
2. 使用Google Cloud Vision API获取拍摄时间和地点
Google Cloud Vision API是Google提供的一项图像识别服务,可以识别图片中的物体、场景、文字、面部表情等信息。其中也包括图片的地理位置信息和拍摄时间信息。
首先你需要注册Google Cloud账户并开通Vision API服务,然后安装Google Cloud Python SDK:
```
pip install google-cloud-vision
```
然后使用以下代码获取拍摄时间和地点:
```python
import io
import os
from google.cloud import vision_v1p3beta1 as vision
# 设置Google Cloud凭证文件路径
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/credentials.json'
# 创建Vision API客户端
client = vision.ImageAnnotatorClient()
# 读取图片文件
with io.open('image.jpg', 'rb') as image_file:
content = image_file.read()
image = vision.types.Image(content=content)
# 发送图片到Vision API并获取结果
response = client.annotate_image({
'image': image,
'features': [{'type': vision.enums.Feature.Type.IMAGE_PROPERTIES}]
})
# 解析结果,获取拍摄时间和地点
props = response.image_properties_annotation
for prop in props:
if prop.name == 'LOCATION':
print('拍摄地点:', prop.value)
if prop.name == 'TIME':
print('拍摄时间:', prop.value)
```
需要注意的是,使用Google Cloud Vision API需要付费,而且获取地理位置信息需要上传图片时开启GPS定位功能。