From f1b3d1b5632550e763c6b099ad58e29445c82cea Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 9 Mar 2019 15:34:32 -0800 Subject: [PATCH] sketchpad invert input --- gradio/inputs.py | 8 ++++++-- gradio/static/img/logo_mini.png | Bin 0 -> 5119 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 gradio/static/img/logo_mini.png diff --git a/gradio/inputs.py b/gradio/inputs.py index 415f720bd4..80d18ac002 100644 --- a/gradio/inputs.py +++ b/gradio/inputs.py @@ -9,7 +9,7 @@ import base64 from gradio import preprocessing_utils from io import BytesIO import numpy as np -from PIL import Image +from PIL import Image, ImageOps class AbstractInput(ABC): """ @@ -43,9 +43,11 @@ class AbstractInput(ABC): class Sketchpad(AbstractInput): - def __init__(self, preprocessing_fn=None, image_width=28, image_height=28): + def __init__(self, preprocessing_fn=None, image_width=28, image_height=28, + invert_colors=True): self.image_width = image_width self.image_height = image_height + self.invert_colors = invert_colors super().__init__(preprocessing_fn=preprocessing_fn) def get_template_path(self): @@ -58,6 +60,8 @@ class Sketchpad(AbstractInput): content = inp.split(';')[1] image_encoded = content.split(',')[1] im = Image.open(BytesIO(base64.b64decode(image_encoded))).convert('L') + if self.invert_colors: + im = ImageOps.invert(im) im = preprocessing_utils.resize_and_crop(im, (self.image_width, self.image_height)) array = np.array(im).flatten().reshape(1, self.image_width, self.image_height, 1) return array diff --git a/gradio/static/img/logo_mini.png b/gradio/static/img/logo_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..d97491c61cd6067ea6e0f296ffeca0e311213e4c GIT binary patch literal 5119 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 literal 0 HcmV?d00001