From 53e580e404e97a40e9af17585b469f7032fa7134 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Thu, 30 Jan 2025 20:22:15 -0600 Subject: [PATCH] quote scroller --- examples/LindenHill-webfont.ttf | Bin 0 -> 37476 bytes examples/LindenHill-webfont.ttf.license | 3 ++ examples/quote_scroller.py | 38 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100755 examples/LindenHill-webfont.ttf create mode 100644 examples/LindenHill-webfont.ttf.license create mode 100644 examples/quote_scroller.py diff --git a/examples/LindenHill-webfont.ttf b/examples/LindenHill-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..e9d64ed7cacb500bdcdc470cf6d410adc0328c62 GIT binary patch literal 37476 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 z, with Reserved Font Name OFL "Linden Hill" + +# SPDX-License-Identifier: OFL-1.1-RFN \ No newline at end of file diff --git a/examples/quote_scroller.py b/examples/quote_scroller.py new file mode 100644 index 0000000..b3ba55e --- /dev/null +++ b/examples/quote_scroller.py @@ -0,0 +1,38 @@ +import requests +from PIL import ImageFont, ImageDraw, Image +import adafruit_raspberry_pi5_piomatter +import numpy as np +import time + +# Load the font +font = ImageFont.truetype("LindenHill-webfont.ttf", 26) # Replace "arial.ttf" with your desired font file + +# Text to measure +#text = "Hello, World!" + + +quote_resp = requests.get("https://www.adafruit.com/api/quotes.php").json() + +text = f"{quote_resp[0]["text"]} - {quote_resp[0]["author"]}" + +#print(font.getbbox(text)) +x, y, text_width, text_height = font.getbbox(text) + +full_txt_img = Image.new("RGB", (int(text_width) + 6, int(text_height) + 6), (0, 0, 0)) +draw = ImageDraw.Draw(full_txt_img) +draw.text((3, 3), text, font=font, fill=(255, 0, 255)) +#img.save("quote.png") + +single_frame_img = Image.new("RGB", (64, 32), (0, 0, 0)) + +geometry = adafruit_raspberry_pi5_piomatter.Geometry(width=64, height=64, n_addr_lines=4, rotation=adafruit_raspberry_pi5_piomatter.Orientation.R180) +framebuffer = np.asarray(single_frame_img) + 0 # Make a mutable copy + +matrix = adafruit_raspberry_pi5_piomatter.AdafruitMatrixBonnetRGB888Packed(framebuffer, geometry) + + +for x_pixel in text_width: + single_frame_img = full_txt_img.crop(x_pixel, 0, 64, 32) + framebuffer[:] = np.asarray(single_frame_img) + matrix.show() + time.sleep(0.01) \ No newline at end of file