The pyexiv2 python module can read / write metadata.
I think there is a limited set of valid EXIF ββtags. I do not know how, or if you can create your own tags. However, you can use the Exif.Photo.UserComment tag and populate it with JSON:
import pyexiv2 import json metadata = pyexiv2.ImageMetadata(filename) metadata.read() userdata={'Category':'Human', 'Physical': { 'skin_type':'smooth', 'complexion':'fair' }, 'Location': { 'city': 'london' } } metadata['Exif.Photo.UserComment']=json.dumps(userdata) metadata.write()
And read it back:
import pprint filename='/tmp/image.jpg' metadata = pyexiv2.ImageMetadata(filename) metadata.read() userdata=json.loads(metadata['Exif.Photo.UserComment'].value) pprint.pprint(userdata)
gives
{u'Category': u'Human', u'Location': {u'city': u'london'}, u'Physical': {u'complexion': u'fair', u'skin_type': u'smooth'}}
source share