From aacd397203e075381c5a5ef9d3bd4ec3de19169d Mon Sep 17 00:00:00 2001 From: Emrah YILDIRIM Date: Thu, 9 Jan 2020 18:19:20 +0100 Subject: [PATCH] image resize option added --- demo.py | 8 ++++---- vlogging/__init__.py | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/demo.py b/demo.py index a4d4198..454069b 100644 --- a/demo.py +++ b/demo.py @@ -24,14 +24,14 @@ logger.addHandler(fh) logger.debug(VisualRecord( - "Hello from OpenCV", cv_image, "This is openCV image", fmt="png")) + "Hello from OpenCV", cv_image, "This is openCV image", fmt="png", size=(50, 50))) logger.info(VisualRecord( - "Hello from PIL", pil_image, "This is PIL image", fmt="jpeg")) + "Hello from PIL", pil_image, "This is PIL image", fmt="jpeg", size=(100, 300))) logger.info(VisualRecord( - "Hello from pylab", fig1, "This is PyLab graph", fmt="png")) + "Hello from pylab", fig1, "This is PyLab graph", fmt="png", size=(100, 300))) logger.warning( VisualRecord("Hello from all", [cv_image, pil_image, fig1], - fmt="png")) + fmt="png", size=(50, 50))) diff --git a/vlogging/__init__.py b/vlogging/__init__.py index a8ce13c..7fb31f4 100644 --- a/vlogging/__init__.py +++ b/vlogging/__init__.py @@ -11,10 +11,12 @@ import cv2 import numpy - def render_opencv(img, fmt="png"): + def render_opencv(img, fmt="png", size=None): if not isinstance(img, numpy.ndarray): return None + if size and isinstance(size, tuple): + img = cv2.resize(img, size) retval, buf = cv2.imencode(".%s" % fmt, img) if not retval: return None @@ -28,11 +30,13 @@ def render_opencv(img, fmt="png"): try: from PIL import Image - def render_pil(img, fmt="png"): + def render_pil(img, fmt="png", size=None): if not callable(getattr(img, "save", None)): return None output = StringIO() + if size and isinstance(size, tuple): + img = img.resize(size) img.save(output, format=fmt) contents = output.getvalue() output.close() @@ -46,11 +50,15 @@ def render_pil(img, fmt="png"): try: import pylab - def render_pylab(img, fmt="png"): + def render_pylab(img, fmt="png", size=None): if not callable(getattr(img, "savefig", None)): return None output = StringIO() + if size and isinstance(size, tuple): + size = (size[0]/img.dpi, size[1]/img.dpi) + img.set_size_inches(size) + img.savefig(output, format=fmt) contents = output.getvalue() output.close() @@ -63,9 +71,10 @@ def render_pylab(img, fmt="png"): class VisualRecord(object): - def __init__(self, title="", imgs=None, footnotes="", fmt="png"): + def __init__(self, title="", imgs=None, footnotes="", fmt="png", size=None): self.title = title self.fmt = fmt + self.size = size if imgs is None: imgs = [] @@ -83,7 +92,7 @@ def render_images(self): for img in self.imgs: for renderer in renderers: # Trying renderers we have one by one - res = renderer(img, self.fmt) + res = renderer(img, self.fmt, self.size) if res is None: continue