首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从python (枕头或pyexiv2)的EXIF数据中获取GPS坐标

无法从python (枕头或pyexiv2)的EXIF数据中获取GPS坐标
EN

Stack Overflow用户
提问于 2021-04-10 17:05:44
回答 2查看 324关注 0票数 1

我正在尝试从JPG图像中提取GPS坐标,但是我没有从pillow中获得太多的信息。

这是我第一次尝试:

代码语言:javascript
复制
from PIL import Image
from PIL.ExifTags import TAGS

my_img = Image.open("IMG_0547.jpg")

exif_data = my_img.getexif()
for tag_id in exif_data:
    tag = TAGS.get(tag_id, tag_id)
    data = exif_data.get(tag_id)

    print(f"{tag:16}: {data}")

输出:

代码语言:javascript
复制
TileWidth       : 512
TileLength      : 512
GPSInfo         : 1996
ResolutionUnit  : 2
ExifOffset      : 216
Make            : Apple
Model           : iPhone XS
Software        : 13.6
Orientation     : 1
DateTime        : 2020:08:13 21:01:41
XResolution     : 72.0
YResolution     : 72.0

从这里下载图像

我也尝试使用pyexiv2,但是我只得到了o行代码metadata = pyexiv2.ImageMetadata('IMG_0547.jpg')的错误,这是没有意义的,因为ImageMetadata是在官方文档这里中列出的。

代码语言:javascript
复制
Traceback (most recent call last):
  File "maps.py", line 17, in <module>
    metadata = pyexiv2.ImageMetadata('IMG_0547.jpg')
AttributeError: module 'pyexiv2' has no attribute 'ImageMetadata'

谁能帮我弄清楚坐标吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-16 13:33:06

枕头的吉顿有解释GPSInfo中的数字只是一种偏移量(参见https://photo.stackexchange.com/a/27724)。

要查找GPSInfo的内容,可以使用PIL.Image.Exif.get_ifd

代码语言:javascript
复制
from PIL import ExifTags, Image

GPSINFO_TAG = next(
    tag for tag, name in TAGS.items() if name == "GPSInfo"
)  # should be 34853

path = "my_geotagged_image.jpg"
image = Image.open(path)
info = image.getexif()

gpsinfo = info.get_ifd(GPSINFO_TAG)

然后按下面的方式进行:从python图片中解读exif数据的GPS信息

票数 1
EN

Stack Overflow用户

发布于 2022-10-14 19:30:15

有点晚了,但这是我最近用来获取图像元数据的方法。我还用modify_iptcmodify_xmp对其进行了修改(此处未发布)。pyexiv2 Rev on PyPI

代码语言:javascript
复制
import pyexiv2 

filename = r"C:\mydjifolder\Junk\DJI_0001.JPG"

img_meta = pyexiv2.Image(filename)

exif_dict = img_meta.read_exif()
xmp_dict = img_meta.read_xmp()
iptc_dict = img_meta.read_iptc()
print("\n**** IPTC Tags metadata ****")
for key, value in iptc_dict.items():
    print(f"TAG {key} = \t\t {value}")

print("**** EXIF Tags metadata ****")
for key, value in exif_dict.items():
    print(f"TAG {key} = \t\t {value}")


print("\n**** XMP Tags metadata ****")
for key, value in xmp_dict.items():
    if key == "Exif.Photo.MakerNote":
        continue
    print(f"TAG {key} = \t\t {value}")
    

print(xmp_dict["Xmp.xmp.CreateDate"])
print(iptc_dict["Iptc.Application2.DateCreated"])
img_meta.close
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67037083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档