Saltar al contenido

En Python, ¿cómo leo los datos exif de una imagen?

Anduvimos buscado en distintos sitios y así de este modo regalarte la solución para tu dilema, en caso de alguna inquietud puedes dejar la inquietud y responderemos sin falta, porque estamos para servirte.

Solución:

Puedes usar el _getexif() método protegido de una imagen PIL.

import PIL.Image
img = PIL.Image.open('img.jpg')
exif_data = img._getexif()

Esto debería darle un diccionario indexado por etiquetas numéricas EXIF. Si desea que el diccionario esté indexado por las cadenas de nombres de etiquetas EXIF ​​reales, intente algo como:

import PIL.ExifTags
exif = 
    PIL.ExifTags.TAGS[k]: v
    for k, v in img._getexif().items()
    if k in PIL.ExifTags.TAGS

También puede utilizar el módulo ExifRead:

import exifread
# Open image file for reading (binary mode)
f = open(path_name, 'rb')

# Return Exif tags
tags = exifread.process_file(f)

Para Python3.x y comenzando Pillow==6.0.0, Image Los objetos ahora proporcionan una getexif() método que devuelve un instancia o None si la imagen no tiene datos EXIF.

De las notas de la versión de Pillow 6.0.0:

getexif() se ha agregado, lo que devuelve un Exif ejemplo. Los valores se pueden recuperar y establecer como un diccionario. Al guardar JPEG, PNG o WEBP, la instancia se puede pasar como un exif argumento para incluir cualquier cambio en la imagen de salida.

Como se indicó, puede iterar sobre el keypares de valores de Exif instancia como un diccionario regular. los keys son enteros de 16 bits que se pueden asignar a sus string nombres usando el ExifTags.TAGS módulo.

from PIL import Image, ExifTags

img = Image.open("sample.jpg")
img_exif = img.getexif()
print(type(img_exif))
# 

if img_exif is None:
    print('Sorry, image has no exif data.')
else:
    for key, val in img_exif.items():
        if key in ExifTags.TAGS:
            print(f'ExifTags.TAGS[key]:val')
            # ExifVersion:b'0230'
            # ...
            # FocalLength:(2300, 100)
            # ColorSpace:1
            # ...
            # Model:'X-T2'
            # Make:'FUJIFILM'
            # LensSpecification:(18.0, 55.0, 2.8, 4.0)
            # ...
            # DateTime:'2019:12:01 21:30:07'
            # ...

Probado con Python 3.8.8 y Pillow==8.1.0.

Sección de Reseñas y Valoraciones

Si te gusta el asunto, tienes la opción de dejar una crónica acerca de qué le añadirías a este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *