Skip to main content

Dither kerneli

Što prikazuje ovaj primjer​

Isu sliku s microSD kartice crta sedam puta, svaki put s jednim od sedam kernela za dithering koje nudi biblioteka, kako biste ih mogli usporediti. Kernel određuje kako se pogreška nastala smanjenjem slike na šest boja zaslona raspodjeljuje na susjedne piksele; kerneli se razlikuju po oštrini, šumu i brzini. Zaslon iznad slike prikazuje naziv kernela i osvježava se jednom po kernelu, u razmaku od pet sekundi.

Trebate microSD karticu formatiranu kao FAT ili FAT32 s datotekom picture1.jpg, umetnutu u Inkplate.

Primjer koda​

Select Board
Inkplate7SPECTRA_Dither_Kernels.ino
#include "Inkplate.h"

Inkplate display;
SdFile file;

ImageColor::DitherKernel kernels[] = {
ImageColor::FloydSteinberg, ImageColor::JarvisJudiceNinke, ImageColor::Atkinson, ImageColor::Burkes,
ImageColor::Stucki, ImageColor::SierraLite, ImageColor::ReducedDiffusion,
};
const char *kernelNames[] = {
"Floyd-Steinberg", "Jarvis-Judice-Ninke", "Atkinson", "Burkes", "Stucki", "Sierra Lite", "Reduced Diffusion",
};
const uint8_t kernelCount = sizeof(kernels) / sizeof(kernels[0]);

void setup()
{
display.begin();

if (!display.sdCardInit())
{
display.println("SD card error!");
display.display();
return;
}

for (uint8_t i = 0; i < kernelCount; i++)
{
display.clearDisplay();
display.setCursor(0, 0);
display.setTextColor(BLACK);
display.setTextSize(2);
display.print("Kernel: ");
display.println(kernelNames[i]);

// Select the kernel used for all subsequent dithered draws
display.image.setDitherKernel(kernels[i]);

if (!display.image.draw("picture1.jpg", 0, 30, true))
{
display.println("Image open error");
}

display.display();
delay(5000);
}

display.sdCardSleep();
}

void loop()
{
// Nothing...
}

Korištene funkcije​

Inkplate()returns None

Stvara objekt Inkplate. Inkplate 7SPECTRA ima jedan šestobojni način rada, pa konstruktor ne prima argument načina rada.

ReturnsKonstruktor; nema povratne vrijednosti.

display.begin()returns void

Inicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().

ReturnsNišta.

SdFile()returns None

Klasa SdFat, uključena u biblioteku Inkplate: objekt datoteke na microSD kartici. Skica ga stvara kao `file` i dalje ga ne koristi.

ReturnsKonstruktor; nema povratne vrijednosti.

display.sdCardInit()returns int16_t

Uključuje napajanje microSD kartice, pokreće njezinu SPI sabirnicu i montira karticu.

Returns1 ako je kartica inicijalizirana, 0 ako nije uspjelo.

display.image.setDitherKernel(const DitherKernel kernel)returns void

Odabire kernel difuzije pogreške koji se koristi za dithering crtanja izvedena nakon toga. Kerneli su ImageColor::FloydSteinberg (zadani), ImageColor::JarvisJudiceNinke, ImageColor::Atkinson, ImageColor::Burkes, ImageColor::Stucki, ImageColor::SierraLite i ImageColor::ReducedDiffusion.

ReturnsNišta.

display.image.draw(const char *path, int x, int y, bool dither = 1, bool invert = 0)returns bool

Otvara datoteku slike na microSD kartici prema nazivu i crta je u međuspremnik slike s gornjim lijevim kutom u točki (x, y). Skica crta picture1.jpg u točki (0, 30) s uključenim ditheringom.

Returnstrue ako je slika nacrtana, false ako se datoteka nije mogla otvoriti ili dekodirati.

display.clearDisplay()returns void

Ispunjava međuspremnik slike bijelom bojom. Ne mijenja zaslon.

ReturnsNišta.

display.setCursor(int16_t x, int16_t y)returns void

Postavlja mjesto na kojem počinje sljedeći ispisani tekst.

ReturnsNišta.

display.setTextColor(uint16_t c)returns void

Postavlja boju teksta, ovdje BLACK.

ReturnsNišta.

display.setTextSize(uint8_t s)returns void

Postavlja povećanje teksta, ovdje 2.

ReturnsNišta.

display.print(value)returns size_t

Ispisuje tekst u međuspremnik slike, poput Serial.print().

ReturnsBroj ispisanih bajtova.

display.println(text)returns size_t

Ispisuje tekst u međuspremnik slike i prelazi u sljedeći redak.

ReturnsBroj ispisanih bajtova.

display.display(bool _leaveOn = 0)returns void

Šalje cijeli međuspremnik slike na zaslon i osvježava ga.

ReturnsNišta.

delay(ms)returns void

Funkcija jezgre Arduina: čeka zadani broj milisekundi, ovdje 5000.

ReturnsNišta.

display.sdCardSleep()returns void

Postavlja SPI pinove kartice kao ulaze i isključuje napajanje kartice radi uštede energije u dubokom snu.

ReturnsNišta.

Što očekivati​

Zaslon prikazuje Kernel: Floyd-Steinberg iznad picture1.jpg. Svakih pet sekundi osvježava se s nazivom sljedećeg kernela i istom slikom, ovim redoslijedom: Floyd-Steinberg, Jarvis-Judice-Ninke, Atkinson, Burkes, Stucki, Sierra Lite, Reduced Diffusion. Nakon posljednjeg kartica se isključuje, a posljednja slika ostaje na zaslonu.

Ako se kartica ne može pokrenuti, na zaslonu se prikazuje SD card error!; ako se slika ne može otvoriti, ispod naziva kernela pojavljuje se Image open error. Skica ništa ne ispisuje u Serial Monitor.

🔗Otvorite cijeli primjer

examples/Inkplate7SPECTRA/Advanced/Other/Inkplate7SPECTRA_Dither_Kernels

→