from PIL import Image
-import display
+import renderer
logger = logging.getLogger()
-# logger.addHandler(logging.StreamHandler(sys.stdout))
logger.setLevel(logging.INFO)
logger = logging.getLogger(__name__)
image = Image.open("testtree_IXCCGR.png")
-image = image.transpose(Image.Transpose.ROTATE_270)
logger.info("image open")
-logger.info("%d -- %d", image.width, image.height)
+rend = renderer.Renderer()
-dsp = display.Display()
-white = Image.new("1", (dsp.width, dsp.height), 'white')
-
-dsp.render(image, white)
+rend.render(image)
def render(self, image: Image):
hsv_image = image.convert("HSV")
+ hsv_pixels = hsv_image.load()
black_image = image.copy()
+ black_pixels = black_image.load()
red_image = Image.new('L', (self.width, self.height), 'white')
+ red_pixels = red_image.load()
for x in range(self.width):
for y in range(self.height):
- h, s, v = hsv_image[x,y]
+ h, s, v = hsv_pixels[x,y]
red_hue_val = max(0, 255 - h*6, (h-212)*6)
- red_val = red_hue_val * s * v / 256 / 256
+ red_val = int(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)
+ red_pixels[x, y] = 0 # 255 - red_val
+ black_pixels[x, y] = (v, v, v)
- black_image.transpose(Image.Transpose.ROTATE_270)
- red_image.transpose(Image.Transpose.ROTATE_270)
+ black_image = black_image.transpose(Image.Transpose.ROTATE_270)
+ red_image = red_image.transpose(Image.Transpose.ROTATE_270)
self.display.render(black_image, red_image)