picseal_pub/libs/img_exif.py

84 lines
1.7 KiB
Python

#
# DEPRECATED
#
# ditching this for my own custom code
# uses GExiv2, and the C to Python bindings. but pain in the ass to install and config
# very limited read/wriging...cannot create a new application comment block. writing my own
import logging
import json
import gi
gi.require_version('GExiv2', '0.10')
from gi.repository import GExiv2
#
# { 'pub_key':b"\x8f\xab\xfe\xd1\xd5\xb4\xea\xbb\xfa", 'sig':b"\x8f\xab\xfe\xd1\xd5\xb4\xea\xbb\xfa" }
#
#
class ImgExif:
sig_h = None
exif_c = None
img_fn = None
#
def __init__(self, img_fn):
self.useImg(img_fn)
#
def useImg(self, img_fn):
result = False
try:
self.exif_c = GExiv2.Metadata()
ret = self.exif_c.open_path(img_fn)
if (ret):
result = True
except Exception as ex:
logging.error(ex)
raise
self.img_fn = img_fn
self.sig_h = {}
#
def addKey(self, key):
self.sig_h['pub_key'] = key
#
def addSig(self, sig):
self.sig_h['sig'] = sig
#
def toJSON(self):
return json.dumps(self.sig_h)
#
def extractKey(self):
pemData = self.exif_c.get_comment()
#
def saveFile(self):
logging.info("Saving image as {}...".format(self.img_fn))
self.exif_c.set_comment(json.dumps(self.sig_h))
self.exif_c.save_file(self.img_fn)
#
def saveAsFile(self, fn):
#fn = self.img_fn + "_PICSEAL.jpg"
logging.info("Saving image as {}...".format(fn))
self.exif_c.set_comment(json.dumps(self.sig_h))
self.exif_c.save_file(fn)
#
# TESTING
#
#
def _test():
img = ImgExif("test/bmw_rim_640_backup.jpg")
img.addKey("-/-THIS IS A KEY-/-")
img.addSig("-/-THIS IS A SIG-/-")
print("JSON: \n{}".format(img.toJSON()))
img.saveFile()
if __name__ == '__main__':
_test()