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
#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 NoneStvara 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 voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().
ReturnsNišta.
SdFile()returns NoneKlasa 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_tUključ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 voidOdabire 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 boolOtvara 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 voidIspunjava međuspremnik slike bijelom bojom. Ne mijenja zaslon.
ReturnsNišta.
display.setCursor(int16_t x, int16_t y)returns voidPostavlja mjesto na kojem počinje sljedeći ispisani tekst.
ReturnsNišta.
display.setTextColor(uint16_t c)returns voidPostavlja boju teksta, ovdje BLACK.
ReturnsNišta.
display.setTextSize(uint8_t s)returns voidPostavlja povećanje teksta, ovdje 2.
ReturnsNišta.
display.print(value)returns size_tIspisuje tekst u međuspremnik slike, poput Serial.print().
ReturnsBroj ispisanih bajtova.
display.println(text)returns size_tIspisuje 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 voidFunkcija jezgre Arduina: čeka zadani broj milisekundi, ovdje 5000.
ReturnsNišta.
display.sdCardSleep()returns voidPostavlja 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