84 lines
1.7 KiB
Python
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()
|