Skip to main content

Tottie wee image rendering library for 64×64 LED matrix displays

Project description

tottie

Tottie /ˈtɒti/ — Scottish word meaning tiny or very small. A tottie wee library for tottie wee displays.

Tottie is a Python library for rendering images onto 64×64 LED matrix displays. It provides the shared rendering primitives used by homeassistant-idotmatrix and homeassistant-trinity.

What's included

  • tottie.moon — Moon phase renderer. Draws the current moon disc with texture, a direction/altitude ring indicator, and a lunar cycle progress bar across the top edge.
  • tottie.overlay — Pixel-font text overlay. Renders track/artist (or any two lines of text) onto an image using a compact 3×5 bitmap font, with automatic text paging for long strings.
  • tottie.image — Image utilities. Centre-crop-and-resize to any square size, and RGB565 conversion for displays that accept raw pixel data over serial/MQTT.

Installation

pip install tottie

Usage

Moon phase

from tottie import render_moon

img = render_moon(lat="51.5", lon="-0.1", elev=10)
img.save("moon.png")

Set mirror_ew=True (the default) when the display is on a north-facing wall, so the moon rises on the correct side.

Now playing overlay

from PIL import Image
from tottie import apply_now_playing_overlay

img = Image.open("album_art.jpg").convert("RGB").resize((64, 64))
apply_now_playing_overlay(img, track="Astronomy", artist="Blue Oyster Cult")
img.save("now_playing.png")

For animated paging (long track/artist names scroll across multiple frames):

from tottie import render_now_playing_frames

frames = render_now_playing_frames(img, track="A Very Long Track Title Indeed", artist="Artist")
# frames is a list of (PIL.Image, duration_ms) pairs

Both functions accept optional dim and position parameters:

  • dim (float, default 0.5) — how much of the original image shows through the text background. 0.0 = solid black, 1.0 = no darkening.
  • position ("top" or "bottom", default "top") — where the text block is placed on the image.
apply_now_playing_overlay(img, track="Astronomy", artist="Blue Oyster Cult", dim=0.7, position="bottom")
render_now_playing_frames(img, track="...", artist="...", dim=0.7, position="bottom")

Image utilities

from PIL import Image
from tottie import crop_and_resize, to_rgb565

img = Image.open("photo.jpg").convert("RGB")
small = crop_and_resize(img, size=64)   # centre-crop square, resize to 64×64
raw = to_rgb565(small)                  # bytes ready to publish over MQTT

Requirements

  • Python 3.11+
  • Pillow
  • ephem (for moon rendering)

Licence

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tottie-0.5.0.tar.gz (40.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tottie-0.5.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file tottie-0.5.0.tar.gz.

File metadata

  • Download URL: tottie-0.5.0.tar.gz
  • Upload date:
  • Size: 40.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tottie-0.5.0.tar.gz
Algorithm Hash digest
SHA256 c65aa23bcb37e701cb517ae7d07e1d3caf025029d79f4dcfbfab96783c8ed912
MD5 8f66b5eaf1de1cde2773258020c94992
BLAKE2b-256 6474685df4ec9f2b877139b7fdac9624aa9b4afba2da17e6c3eecd47928f71ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for tottie-0.5.0.tar.gz:

Publisher: release.yml on d0ugal/tottie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tottie-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: tottie-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tottie-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4af310d1c1f5b365334d6f0d7fc797c6d0ed2ca7fea8f1f2761042c3e9065fc6
MD5 12c99fe1ce001ada8429085c308968cb
BLAKE2b-256 e1b415e12cb40276c5e4897d546907947cbe5b82377ba85fb036a5940169095e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tottie-0.5.0-py3-none-any.whl:

Publisher: release.yml on d0ugal/tottie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page