diff options
Diffstat (limited to 'mitmproxy/contentviews/image/image_parser.py')
-rw-r--r-- | mitmproxy/contentviews/image/image_parser.py | 42 |
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 |