img2blocks

this image is supposed to be made almost entirely of sextant blocks, the Unicode characters around U+1FB00 – U+1FB1E made out of two columns of three blocks. They’re originally from broadcast teletext, and were made to build low-resolution images on a text screen

a blocky image of a large flightless bird with the text "Cassowary Detected"
redrawn from an image in Artificial intelligence used to reduce cassowary road deaths in Queensland

And here’s the original tiny image:

a small image of a large flightless bird with the text "Cassowary Detected"
“Cassowary Detected”, at actual size

Making the pixel to character map is quite tricky. The Sextant character block isn’t contiguous, and it’s not in the order we need. It’s also missing four characters: empty block, full block, left half block and right half block. These have to be pulled in from other Unicode blocks.

This is the map I came up with, from 0–63 with LSB at bottom right and MSB at top left:

 🬞🬏🬭🬇🬦🬖🬵🬃🬢🬓🬱🬋🬩🬚🬹🬁🬠🬑🬯🬉▐🬘🬷🬅🬤🬔🬳🬍🬫🬜🬻🬀🬟🬐🬮🬈🬧🬗🬶🬄🬣▌🬲🬌🬪🬛🬺🬂🬡🬒🬰🬊🬨🬙🬸🬆🬥🬕🬴🬎🬬🬝█

After that, it’s a small matter of bashing something together in Python with PIL and Numpy. Here’s the source:

or if you want to take a look first: img2blocks – bitmap to Unicode sextants

blocky criss-crossed bars make a pseudo woven pattern
X11’s wide_weave, scaled up

(yes, there are clever things like Chafa that can do more, but it can’t do exactly what this does)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *