Estamos migrando de sistemas de foros, por favor repórtanos cualquier problema a [email protected], si te llega a tu bandeja de entrada o a spam un correo que te dice que se solicitó el cambio de contraseña, no te alarmes, es un procedimiento normal de la migración, cambia tu contraseña porque no hay compatibilidad en el sistema de cifrado del viejo sistema con el sistema nuevo, por eso debes resetear tu clave con ese enlace.

Extraer metadatos de una imagen con python

editado abril 2017 en Programación

Por twitter veo que la parcerita @UnaPibaGeek publicó un código en python bien sencillo pero bastante útil, que permite identificar si una imagen tiene metadatos y si los tiene los muestra en pantalla.

El trino en cuestión es el siguiente.

Pero como se empezaron a quejar del formato en el que se publicó (imagen)

pues me puse en la tarea con la ayuda de un OCR online (http://www.onlineocr.net/) de organizar el código y compartirlo con ustedes.

import argparse
from PIL import Image
from PIL.ExifTags import TAGS

parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image',
  required=True, type=str, help='Image')

args = parser.parse_args()
img = Image.open(args.image)
exif = img._getexif()

try:
  for (k,v) in exif.iteritems():
    print '%s = %s' (TAGS.get(k), v)
except:
  print "Metadata not found!"

Ahí les dejo ;-) todos los créditos para @UnaPibaGeek "Sheila A. Berta"

Actualizo la entrada para añadir el aporte de @a_l_e_p_h quien le añadió la opcion de leer directorios

import argparse,os
from PIL import Image
from PIL.ExifTags import TAGS
# MetadaExtractor
# By: @UnaPibageek
# Last change: @a_l_e_p_h
def readMetadata(image):
    img = Image.open(image)
    exif = img._getexif()
    print("Results for "+image)
    try:
        for (k, v) in exif.iteritems():
            print '%s = %s'%(TAGS.get(k), v)
    except:
        print "Metadata not found!"
if __name__ == '__main__':
    parser = argparse.ArgumentParser(prog='MetadataExtractor',usage='%(prog)s [options]')
    parser.add_argument('-i', '--image',
      required=False, type=str, help='Image')
    parser.add_argument('-d', '--directory',
      required=False, type=str, help='Directory')
    args = parser.parse_args()
    if args.directory and args.image:
        print("Only can use -i --image or -d --directory but not both")
    else:
        if args.image:
            readMetadata(args.image)
        elif args.directory:
            try:
                filenames = next(os.walk(args.directory))[2]
                for filename in filenames:
                    try:
                        img = Image.open(filename)
                        readMetadata(filename)
                    except:
                        print(filename+" is not a valid Image")
            except:
                print(args.directory + " is not a valid directory")

Etiquetado como:
Accede o Regístrate para comentar.