aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/contentviews/image/image_parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/contentviews/image/image_parser.py')
-rw-r--r--mitmproxy/contentviews/image/image_parser.py42
1 files changed, 15 insertions, 27 deletions
diff --git a/mitmproxy/contentviews/image/image_parser.py b/mitmproxy/contentviews/image/image_parser.py
index 8e5762c9..e523def5 100644
--- a/mitmproxy/contentviews/image/image_parser.py
+++ b/mitmproxy/contentviews/image/image_parser.py
@@ -1,34 +1,22 @@
+import typing
+
from kaitaistruct import KaitaiStream
from . import png
-def get_png(data):
+Metadata = typing.List[typing.Tuple[str, str]]
+
+def parse_png(data: bytes) -> Metadata:
img = png.Png(KaitaiStream(data))
- parts = {'format': 'Portable network graphics'}
- f = 'PNG'
- width = img.ihdr.width
- height = img.ihdr.height
- parts["width"] = width
- parts["height"] = height
- for i in range(0, len(img.chunks)):
- chunk = img.chunks[i]
+ parts = [tuple(['Format', 'Portable network graphics'])]
+ parts.append(tuple(['Size', str(img.ihdr.width) + " x " + str(img.ihdr.height) + " px"]))
+ for chunk in img.chunks:
if chunk.type == 'gAMA':
- gamma = chunk.gamma_int / 100000
- parts['gamma'] = gamma
+ parts.append(tuple(['gamma', str(chunk.body.gamma_int / 100000)]))
elif chunk.type == 'pHYs':
- aspectx = chunk.pixels_per_unit_x
- aspecty = chunk.pixels_per_unit_y
- parts["aspectx"] = aspectx
- parts["aspecty"] = aspecty
- return f, parts
-
-def format_contentviews(parts):
- ret = []
- ret.append(tuple(['Format', parts["format"]]))
- if "width" in parts:
- ret.append(tuple(['Size', str(parts["width"]) + " x " + str(parts["height"]) + " px"]))
- if "aspectx" in parts:
- ret.append(tuple(['aspect', '(' + str(parts["aspectx"]) + ', ' + str(parts["aspecty"]) + ')']))
- if "gamma" in parts:
- ret.append(tuple(['gamma', str(parts["gamma"])]))
- return ret
+ aspectx = chunk.body.pixels_per_unit_x
+ aspecty = chunk.body.pixels_per_unit_y
+ parts.append(tuple(['aspect', str(aspectx) + " x " + str(aspecty)]))
+ elif chunk.type == 'tEXt':
+ parts.append(tuple([chunk.body.keyword, chunk.body.text]))
+ return parts