The Floyd-Steinberg Dithering Algorithm for Thermal Paper Printing #Java
If you’ve ever converted an image to GIF and restricted its color table to 256, you effectively employed the Floyd–Steinberg dithering algorithm. For thermal printers – where the background is typically white and black is probably your only ink color – the challenges are different but you can still achieve remarkable results. Thankfully Pierre Muth walks through the process, all stemming from his Free Beer Selfie project.
To print pictures on thermal paper with reasonably good rendering, they should be converted according the printer limitations. It’s quite simple, it can be printed only black pixels (and whites as the paper is usually white).
As receipt thermal printer use paper roll, there is virtually no image length limit. If we want to convert on the fly the image and strait print it, we cannot rely on a fixe full image sized buffer. That’s why I experimenting conversion algorithm based on Floyd-Steinberg, but with only a small rotating buffer. The size of this ‘line’ buffer could be as small as a line size plus one.
Other than the code itself, I try to explain the principle with this Gif :
Make a robot friend with Adafruit’s CRICKIT – A Creative Robotics & Interactive Construction Kit. It’s an add-on to our popular Circuit Playground Express, FEATHER and other platforms to make and program robots with CircuitPython, MakeCode, and Arduino. Start controlling motors, servos, solenoids. You also get signal pins, capacitive touch sensors, a NeoPixel driver and amplified speaker output. It complements & extends your boards so you can still use all the goodies on the microcontroller, now you have a robotics playground as well.