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

@ -13,23 +13,6 @@ Display
:members:
Modules
===========================
- Agenda
.. automodule:: inkycal.modules.inkycal_agenda.Agenda
:members:
- Calendar
.. automodule:: inkycal.modules.inkycal_calendar.Calendar
:members:
- Feeds Module (RSS & Atom)
.. automodule:: inkycal.modules.inkycal_feeds.Feeds
:members:
Custom functions
===========================
.. automodule:: inkycal.custom.functions

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.')

View File

@ -14,7 +14,7 @@ from tests import Config
preview = Inkyimage.preview
merge = Inkyimage.merge
url = "https://github.com/aceinnolab/Inkycal/raw/assets/Repo/coffee.png"
url ="https://raw.githubusercontent.com/aceinnolab/Inkycal/assets/tests/mark-harpur-unsplash.jpg"
im = Image.open(requests.get(url, stream=True).raw)
im.save("test.png", "PNG")
@ -27,9 +27,9 @@ tests = [
{
"name": "Inkyimage",
"config": {
"size": [400, 200],
"size": [800, 600],
"path": test_path,
"palette": "bwr",
"palette": "16gray",
"autoflip": True,
"orientation": "vertical",
"padding_x": 10, "padding_y": 10, "fontsize": 12, "language": "en"