2018-03-20 01:20:11 +01:00
|
|
|
import subprocess
|
|
|
|
import json
|
|
|
|
|
|
|
|
import cairo
|
|
|
|
|
|
|
|
from . import abstract
|
|
|
|
|
|
|
|
class PNGParser(abstract.AbstractParser):
|
|
|
|
mimetypes = {'image/png', }
|
2018-03-20 23:35:02 +01:00
|
|
|
meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName',
|
|
|
|
'Directory', 'FileSize', 'FileModifyDate', 'FileAccessDate',
|
|
|
|
"FileInodeChangeDate", 'FilePermissions', 'FileType',
|
|
|
|
'FileTypeExtension', 'MIMEType', 'ImageWidth', 'BitDepth', 'ColorType',
|
|
|
|
'Compression', 'Filter', 'Interlace', 'BackgroundColor', 'ImageSize',
|
|
|
|
'Megapixels', 'ImageHeight'}
|
2018-03-20 01:20:11 +01:00
|
|
|
|
|
|
|
def get_meta(self):
|
|
|
|
out = subprocess.check_output(['exiftool', '-json', self.filename])
|
2018-03-20 23:35:02 +01:00
|
|
|
meta = json.loads(out)[0]
|
|
|
|
for key in self.meta_whitelist:
|
|
|
|
meta.pop(key, None)
|
|
|
|
return meta
|
2018-03-20 01:20:11 +01:00
|
|
|
|
|
|
|
def remove_all(self):
|
|
|
|
surface = cairo.ImageSurface.create_from_png(self.filename)
|
|
|
|
surface.write_to_png(self.output_filename)
|
2018-03-20 23:35:02 +01:00
|
|
|
return True
|