From: Dustin Walde Date: Fri, 3 Jan 2025 04:15:50 +0000 (-0800) Subject: Add first attempt of renderer X-Git-Url: https://git.walde.dev/?a=commitdiff_plain;h=f51e16e4cc131c6370a2f6a51c4c28a61424db12;p=epaper_display Add first attempt of renderer --- diff --git a/src/renderer.py b/src/renderer.py new file mode 100644 index 0000000..367640c --- /dev/null +++ b/src/renderer.py @@ -0,0 +1,29 @@ +from PIL import Image + +import display + +class Renderer: + def __init__(self) -> None: + self.width = display.EPD_HEIGHT + self.height = display.EPD_WIDTH + self.display = display.Display() + + def render(self, image: Image): + hsv_image = image.convert("HSV") + + black_image = image.copy() + red_image = Image.new('L', (self.width, self.height), 'white') + + for x in range(self.width): + for y in range(self.height): + h, s, v = hsv_image[x,y] + red_hue_val = max(0, 255 - h*6, (h-212)*6) + red_val = red_hue_val * s * v / 256 / 256 + if red_val > 0: + red_image[x, y] = 255 - red_val + black_image[x, y] = (v, v, v) + + black_image.transpose(Image.Transpose.ROTATE_270) + red_image.transpose(Image.Transpose.ROTATE_270) + self.display.render(black_image, red_image) +