Skip to main content

Međuspremnik slike u boji

Što ovaj primjer prikazuje​

Crtanje male slike izravno iz međuspremnika u vašem kodu, bez datoteke koju je potrebno dekodirati. Međuspremnik sadrži dva piksela po bajtu: gornja četiri bita su indeks boje prvog piksela, a donja četiri bita indeks boje drugog. Primjer izrađuje sliku veličine 180 × 90 piksela s šest okomitih pruga, po jednom za svaku boju.

Primjer koda​

"""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()

Korištene funkcije​

Inkplate()returns Inkplate

Izrađuje objekt zaslona iz modula inkplate7spectra.

ReturnsObjekt zaslona.

inkplate.begin()returns bool

Priprema pločicu i bijeli međuspremnik okvira. Pozovite je samo jednom.

ReturnsTrue.

inkplate.draw_color_image(x, y, width, height, image)returns None

Crta spremnik sa spakiranim pikselima, dva piksela po bajtu, pri čemu su prva četiri bita prvi piksel, redak po redak, s gornjim lijevim kutom u točki (x, y). Svaka četverobitna vrijednost je indeks boje, od 0 do 5.

ReturnsNišta.

inkplate.display(leave_on=False)returns None

Šalje međuspremnik okvira na panel i osvježava ga.

ReturnsNišta.

Što očekivati​

Blok od 180 × 90 piksela pojavljuje se 50 piksela od gornjeg lijevog kuta, a čini ga šest pruga širokih 30 piksela: crna, bijela, žuta, crvena, plava i zelena. U shellu se ništa ne ispisuje.

🔗Otvorite cijeli primjer

examples/inkplate7spectra/draw_color_image.py

→