Implement 16 grayscale support for image module

This commit is contained in:
Ace
2023-12-14 01:51:10 +01:00
parent 1138f2d862
commit a7e2a852e9
5 changed files with 26 additions and 26 deletions

View File

@@ -8,6 +8,7 @@ import os
import time
import traceback
import PIL
import requests
from PIL import ImageFont, ImageDraw, Image
@@ -335,10 +336,10 @@ def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)):
draw.arc((c7, c8), 90, 180, fill=colour, width=thickness)
def draw_border_2(im: Image, xy: tuple, size: tuple, radius: int):
def draw_border_2(im: PIL.Image, xy: tuple, size: tuple, radius: int):
draw = ImageDraw.Draw(im)
x, y = xy
w, h = size
draw.rounded_rectangle(xy=(x, y, x + w, y + h), outline="black", radius=radius)
draw.rounded_rectangle(xy=(x, y, x + w, y + h), outline="black", radius=radius)

View File

@@ -2,18 +2,21 @@
Inkycal ePaper driving functions
Copyright by aceisace
"""
import os
import logging
import os
import traceback
from importlib import import_module
import PIL
from PIL import Image
from inkycal.custom import top_level
import glob
def import_driver(model):
return import_module(f'inkycal.display.drivers.{model}')
class Display:
"""Display class for inkycal
@@ -44,7 +47,14 @@ class Display:
except FileNotFoundError:
raise Exception('SPI could not be found. Please check if SPI is enabled')
def render(self, im_black: Image, im_colour:Image or None=None) -> None:
def test(self) -> None:
"""Test the display by showing a test image"""
# TODO implement test image
raise NotImplementedError("Devs were too lazy again, sorry, please try again later")
def render(self, im_black: PIL.Image, im_colour: PIL.Image or None) -> None:
"""Renders an image on the selected E-Paper display.
Initlializes the E-Paper display, sends image data and executes command

View File

@@ -10,6 +10,8 @@ Copyright by aceinnolab
"""
import logging
import os
import PIL
import numpy
import requests
@@ -215,7 +217,7 @@ class Inkyimage:
return image1
def to_palette(self, palette, dither=True) -> (Image, Image):
def to_palette(self, palette, dither=True) -> (PIL.Image, PIL.Image):
"""Maps an image to a given colour palette.
Maps each pixel from the image to a colour from the palette.
@@ -235,6 +237,7 @@ class Inkyimage:
>>> 'bwr' # black-white-red
>>> 'bwy' # black-white-yellow
>>> 'bw' # black-white
>>> '16gray' # 16 shades of gray
"""
# Check if an image is loaded
if self._image_loaded():
@@ -252,6 +255,9 @@ class Inkyimage:
elif palette == 'bw':
pal = None
elif palette == '16gray':
pal = [x for x in range(0, 256, 16)] * 3
pal.sort()
else:
logger.error('The given palette is unsupported.')