Color-Image-Puffer
Was dieses Beispiel zeigt
Zeichnen Sie ein kleines Bild direkt aus einem Puffer in Ihrem Code, ohne eine Datei dekodieren zu müssen. Der Puffer enthält zwei Pixel pro Byte: Die oberen vier Bits sind der Farbindex des ersten Pixels, die unteren vier Bits der des zweiten. Das Beispiel erstellt ein Bild von 180 × 90 Pixeln mit sechs vertikalen Streifen, einen pro Farbe.
Beispielcode
"""Draw a small pre-packed color image buffer directly onto the screen.
draw_color_image() takes a raw 4bpp buffer (2 pixels per byte, row-major, high
nibble first) instead of decoding a file -- useful for small pre-rendered
icons/patterns baked directly into your code instead of loaded from SD/web.
"""
from inkplate7spectra import Inkplate
inkplate = Inkplate()
inkplate.begin()
# Build a small pixel image cycling through all 6 available colors in vertical
# stripes, two pixels packed per byte (high nibble = first pixel, low nibble =
# second). Sized 180x90 so the stripes are clearly visible on screen.
IMG_WIDTH = 180
IMG_HEIGHT = 90
colors = [
Inkplate.BLACK,
Inkplate.WHITE,
Inkplate.YELLOW,
Inkplate.RED,
Inkplate.BLUE,
Inkplate.GREEN,
]
stripe_width = IMG_WIDTH // len(colors)
bytes_per_row = IMG_WIDTH // 2
image = bytearray(bytes_per_row * IMG_HEIGHT)
for y in range(IMG_HEIGHT):
for xb in range(bytes_per_row):
c1 = colors[min((2 * xb) // stripe_width, len(colors) - 1)]
c2 = colors[min((2 * xb + 1) // stripe_width, len(colors) - 1)]
image[y * bytes_per_row + xb] = (c1 << 4) | c2
# Draw it near the top-left corner
inkplate.draw_color_image(50, 50, IMG_WIDTH, IMG_HEIGHT, image)
inkplate.display()
Verwendete Funktionen
Inkplate()returns InkplateErstellt das Display-Objekt aus dem Modul inkplate7spectra.
ReturnsDas Display-Objekt.
inkplate.begin()returns boolRichtet das Board und einen weißen Framebuffer ein. Rufen Sie sie nur einmal auf.
ReturnsTrue.
inkplate.draw_color_image(x, y, width, height, image)returns NoneZeichnet einen gepackten Puffer mit zwei Pixeln pro Byte, wobei die oberen vier Bits zuerst kommen, Zeile für Zeile, mit der oberen linken Ecke bei (x, y). Jeder Vier-Bit-Wert ist ein Farbindex von 0 bis 5.
ReturnsNichts.
inkplate.display(leave_on=False)returns NoneSendet den Framebuffer an das Panel und aktualisiert es.
ReturnsNichts.
Was Sie erwarten können
Ein Block von 180 × 90 Pixeln erscheint 50 Pixel von der oberen linken Ecke entfernt. Er besteht aus sechs Streifen von je 30 Pixeln Breite: Schwarz, Weiß, Gelb, Rot, Blau und Grün. In der Shell wird nichts ausgegeben.
🔗Vollständiges Beispiel öffnen
examples/inkplate7spectra/draw_color_image.py