From dbeae3385a01fa3e408b42ab51ed8bd2c3a22e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Ko=C5=9Bci=C3=B3w?= Date: Sat, 29 Apr 2017 14:21:32 +0200 Subject: [PATCH] transparent image on ili demo file --- gfxlcd/demos/assets/numbers.jpg | Bin 0 -> 6063 bytes gfxlcd/demos/ili_image.py | 4 ++++ gfxlcd/drawing/area.py | 36 +++++++++++++++++++++++++++++--- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 gfxlcd/demos/assets/numbers.jpg diff --git a/gfxlcd/demos/assets/numbers.jpg b/gfxlcd/demos/assets/numbers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8904adb0037ef3a9a0bf86d103d5d129c2229b8 GIT binary patch literal 6063 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 literal 0 HcmV?d00001 diff --git a/gfxlcd/demos/ili_image.py b/gfxlcd/demos/ili_image.py index a1274f2..057e9d6 100644 --- a/gfxlcd/demos/ili_image.py +++ b/gfxlcd/demos/ili_image.py @@ -17,3 +17,7 @@ RPi.GPIO.output(LED, 1) image_file = Image.open("assets/japan_temple_240x320.jpg") lcd_tft.draw_image(0, 0, image_file) + +numbers_image = Image.open("assets/dsp2017_101_64.png") +lcd_tft.transparency_color = (0, 0, 0) +lcd_tft.draw_image(10, 10, numbers_image) \ No newline at end of file diff --git a/gfxlcd/drawing/area.py b/gfxlcd/drawing/area.py index 9712b39..f631c69 100644 --- a/gfxlcd/drawing/area.py +++ b/gfxlcd/drawing/area.py @@ -132,6 +132,36 @@ class Area(Pixel): pos_x + width - 1, pos_y + height - 1 ) - for r, g, b in list(image_file.getdata()): - self.color = (r, g, b) - self.driver.data(self._converted_color(), None) \ No newline at end of file + row = 0 + col = 0 + area = None + temporary_area = None + for red, green, blue in list(image_file.getdata()): + if self._is_transparent((red, green, blue)): + area = (pos_x, pos_y + row + 1, pos_x + width - 1, pos_y + height - 1) + temporary_area = (pos_x + col + 1, pos_y + row, pos_x + width - 1, pos_y + row) + else: + if temporary_area is not None: + self._set_area(*temporary_area) + temporary_area = None + self.color = (red, green, blue) + self.driver.data(self._converted_color(), None) + + col += 1 + if col > width - 1: + col = 0 + row += 1 + if area is not None: + self._set_area(*area) + area = None + + def _is_transparent(self, color): + """check if color is a transparency color""" + if self.options['transparency_color'] is None: + return False + elif type(self.options['transparency_color'][0]) == int and color == self.options['transparency_color']: + return True + elif type(self.options['transparency_color'][0]) == list and color in self.options['transparency_color']: + return True + + return False \ No newline at end of file