Skip to main content

CliRenderer

A text renderer that renders unicode art from images to the terminal

Installation

Install the latest version with: pip install CliRenderer

Usage

See clirender --help for a list of options and arguments.

Notice when reading output

Linux

cat the contents like this cat outfile

Windows Powershell

cat the contents like this Get-Content outfile -encoding UTF8

This is because the contents of the output files will be encoded in utf-8. powershell defaults to utf-7 for some reason.


Example Outputs:

img.png Original image from pexels

img.png Original image from pexels

How It Works

Disclaimer

I am terrible at explaining things.


This program mainly relies on unicode braille characters to represent pixels.

Braille characters are basically a 2x4 grid of dot(s).

First, I grayscale the image, this is important for later,

then I basically divided the image into many cells of 2x4 pixels width and height.

After because each image cell consists of 2x4 pixels that is grayscale, I can easily find the middle color. Cycling through the cell, we can now convert the pixels into binary. Pixel in the cell that are darker than the middle will be False Pixels that are lighter wil be True Now we have a boolean array representing bits.

The table below represent how each pixel in the cell correspond to its position in the array.

1 5
2 6
3 7
4 8

Coincidentally, braille characters are ordered the similarly in unicode.

1 4
2 5
3 6
7 8

However, for some reason, 7 is inserted before 4.

So we can just account for that by rearranging the array before converting it into binary like so:

#pixels is the boolean array
converted = [pixels[7], pixels[3], pixels[6], pixels[5], pixels[4], pixels[2], pixels[1], pixels[0]]

After converting the array into binary, the binary is the index of the character in the string we need.

Coloring

During the process above, another image is generated, we call this a mask,

where it is white, the pixel will be represented by the braille character.

where it is black, the pixel will be represented by the background color.

We once again divide the image up into cells,

iterating through the pixels in the cells, we set 2 colors for each cell: fore and back.

The fore color is calculated by averaging the color from the image where pixel in the mask is white.

The back color is calculated by similarily but using where the pixel in the mask is black.

Then using rich.py, we can color the foreground and background of each character using the fore and back character of each cell.

More characters

braille characters unfortunately do not really take up the entire character space given to them.

This makes less noticeable, however we can subsitute some of the braille characters to give them more "weight".

For example, I replaced "⣀" with "▂".

Metadata

Release files for CliRenderer 0.1.6.post4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for CliRenderer 0.1.6.post4
File Size Uploaded
CliRenderer-0.1.6.post4.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for CliRenderer 0.1.6.post4
File Interpreter ABI Platform
CliRenderer-0.1.6.post4-py3-none-any.whl Python 3 none any Details

Total release size: 19.1 kB

Release files / CliRenderer-0.1.6.post4.tar.gz

Download URL CliRenderer-0.1.6.post4.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
772b99e39a7ef444a94c3bcd9a0d594d2513ef7bad77a02e535de03ecd2bce98
BLAKE2b-256 checksum
How to use checksums
10122caaba7cb84adb6a571a69384da361187042aaf22197d5af257c5947d278
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / CliRenderer-0.1.6.post4-py3-none-any.whl

Download URL CliRenderer-0.1.6.post4-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae5d201b25a170e2925b4321b893074f74849d479b7f7e9a4f36bd02e408ed08
BLAKE2b-256 checksum
How to use checksums
0c43ef5c21faf628c293a1d14c7639eb3d94960d2176c8f63117ae892ec774e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.1.6.post4 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page