Search code examples
pythonmetadatapython-imaging-libraryexif

How to modify EXIF data in python


I am trying to edit/modify existing metadata within python 2.7. More specifically I have GPS coordinates in a my metedata, however the altitude field is incorrect. Is there a way of changing this?

I have had a look at PIL piexif pyexif, but I cannot seem to find a way to modify existing fields.

Has anyone managed to do this? It sounds like it would be very simple, but I can't seem to work it out.


Solution

  • import piexif
    from PIL import Image
    
    img = Image.open(fname)
    exif_dict = piexif.load(img.info['exif'])
    
    altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
    print(altitude)
    

    (550, 1) % some values are saved in a fractional format. This means 550m, (51, 2) would be 25,5m.

    exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = (140, 1)
    

    This sets the altitude to 140m

    exif_bytes = piexif.dump(exif_dict)
    img.save('_%s' % fname, "jpeg", exif=exif_bytes)