summaryrefslogtreecommitdiff
path: root/libmat2
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2')
-rw-r--r--libmat2/images.py34
1 files changed, 32 insertions, 2 deletions
diff --git a/libmat2/images.py b/libmat2/images.py
index 32a329f..8bef3f8 100644
--- a/libmat2/images.py
+++ b/libmat2/images.py
@@ -1,18 +1,48 @@
1import imghdr 1import imghdr
2import os 2import os
3from typing import Set 3from typing import Set, Dict, Union
4 4
5import cairo 5import cairo
6 6
7import gi 7import gi
8gi.require_version('GdkPixbuf', '2.0') 8gi.require_version('GdkPixbuf', '2.0')
9from gi.repository import GdkPixbuf, GLib 9gi.require_version('Rsvg', '2.0')
10from gi.repository import GdkPixbuf, GLib, Rsvg
10 11
11from . import exiftool 12from . import exiftool
12 13
13# Make pyflakes happy 14# Make pyflakes happy
14assert Set 15assert Set
15 16
17class SVGParser(exiftool.ExiftoolParser):
18 mimetypes = {'image/svg+xml', }
19 meta_allowlist = {'Directory', 'ExifToolVersion', 'FileAccessDate',
20 'FileInodeChangeDate', 'FileModifyDate', 'FileName',
21 'FilePermissions', 'FileSize', 'FileType',
22 'FileTypeExtension', 'ImageHeight', 'ImageWidth',
23 'MIMEType', 'SVGVersion', 'SourceFile', 'ViewBox'
24 }
25
26 def remove_all(self) -> bool:
27 svg = Rsvg.Handle.new_from_file(self.filename)
28 dimensions = svg.get_dimensions()
29 surface = cairo.SVGSurface(self.output_filename,
30 dimensions.height,
31 dimensions.width)
32 context = cairo.Context(surface)
33 svg.render_cairo(context)
34 surface.finish()
35 return True
36
37 def get_meta(self) -> Dict[str, Union[str, dict]]:
38 meta = super().get_meta()
39
40 # The namespace is mandatory, but thereis only one bossible.
41 ns = 'http://www.w3.org/2000/svg'
42 if meta.get('Xmlns', ns) == ns:
43 meta.pop('Xmlns')
44 return meta
45
16class PNGParser(exiftool.ExiftoolParser): 46class PNGParser(exiftool.ExiftoolParser):
17 mimetypes = {'image/png', } 47 mimetypes = {'image/png', }
18 meta_allowlist = {'SourceFile', 'ExifToolVersion', 'FileName', 48 meta_allowlist = {'SourceFile', 'ExifToolVersion', 'FileName',