Skip to content

Tesselate splits images into printable strips for thermal receipt printers, supporting all DIN formats (A0–A6) and custom banner sizes. It’s ideal for large-format or experimental printing with standard receipt printers, roll printers, and thermal printers.

Notifications You must be signed in to change notification settings

sinanatra/tessellate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tessellate

image 1 image 2

tessellate splits images into printable strips for thermal receipt printers, supporting all DIN formats (A0–A6) and custom banner sizes.
It’s ideal for large-format or experimental printing with standard receipt printers, roll printers, and thermal printers.

It exists as a python library and web interface.

Screenshot 2025-08-17 at 16 02 46

Installation

Clone this repo and install dependencies:

pip install -r requirements.txt

Usage

1. Split an image

DIN format, vertical strips (A3, Floyd-Steinberg dither):

python3 tessellate.py tessellate img/thinker.jpg --din A1 --strip_mm 60 --direction vertical --dither_mode floyd

Custom size in centimeters (e.g., 55cm x 80cm, horizontal strips):

python tessellate.py tessellate img/trees.jpg --width_cm 55 --height_cm 80 --direction horizontal --dither_mode floyd --mode fill

Halftone grid and inverted colours:

python tessellate.py tessellate img/palm.jpg --din A4 --invert --dither_mode halftone

Options:

--output_folder           Name of folder for image strips (default: tessellated_strips)
--strip_mm                Width or height of each strip, in mm (default: 72.2)
--dither_mode             floyd, halftone, or none
--direction               vertical, horizontal or diagonal
--printer_dots_per_mm     Print resolution (default: 8)
--halftone_cell_size      Dot size for halftone (default: 8)
--mode                    How to resize: fit, fill, or stretch
--din                     Use a DIN size (e.g. A2, A4, etc)
--width_cm                Custom width in centimeters (overrides DIN)
--height_cm               Custom height in centimeters (overrides DIN)
--invert                  Invert the image (black <-> white)

See all available options:

python tessellate.py tessellate --help

2. Print all image strips in a folder

Direct to USB receipt printer:

python tessellate.py print tessellated_strips --printer_name _0_0_0_0

Or, using your system printer (via lpr):

python tessellate.py print tessellated_strips --printer_name YOUR_PRINTER_NAME

Web tool

image 1 image 2

tessellate is also a web app built in Svelte. Runs entirely in the browser: load an image, set DIN/custom size and strip width, apply dithering (Floyd–Steinberg, Halftone, None, Invert), and export or print.

Quick start

cd frontend
npm i
npm run dev
# open http://localhost:5173

About

Tesselate splits images into printable strips for thermal receipt printers, supporting all DIN formats (A0–A6) and custom banner sizes. It’s ideal for large-format or experimental printing with standard receipt printers, roll printers, and thermal printers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published