Convert images to unicode based on font templates. Especially usable in terminal.
Project description
img2unicode
A tool to display images as Unicode in your terminal. The library is currently optimized for Ubuntu Mono font rendered by libvte (Gnome Terminal, Terminator etc.) i.e. it works on stock Ubuntu.
pip install img2unicode
imgcat image.jpg
Installation
You can install img2unicode via pip from PyPI:
$ pip install img2unicode
If you want to utilize FastGammaOptimizer
,
install the optional n2 dependency:
$ pip install 'img2unicode[n2]'
Note that ExactGammaOptimizer
is more portable, yet much slower.
Use BestGammaOptimizer
alias to choose automatically between these two.
Usage
import img2unicode
# Use Unicode Block Elements
optimizer = img2unicode.FastGenericDualOptimizer("block")
renderer = img2unicode.Renderer(default_optimizer=optimizer, max_h=60, max_w=160)
renderer.render_terminal('examples/obama.jpg', 'obama-block.txt')
# Pair Renderer to Optimizer
optimizer = img2unicode.FastGammaOptimizer("no_block") # Or ExactGammaOptimizer
renderer = img2unicode.GammaRenderer(default_optimizer=optimizer, max_h=60, max_w=160)
renderer.render_terminal('examples/obama.jpg', 'obama-noblock.txt')
pil_image = renderer.prerender('examples/obama.jpg')
pil_image.save('obama-rendered.png')
# Use own mask: it may be name from common masks (see source), slice or numpy bool array.
ascii_optimizer = img2unicode.FastGammaOptimizer(slice(32, 127), use_color=False)
# Get the characters, foreground and background colors. Use non-default optimizer.
chars, fores, backs = renderer.render_numpy('examples/obama.jpg', optimizer=ascii_optimizer)
Optimizers
Here is a quick comparison of the most usable optimizers:
FastQuadDualOptimizer() | FastGenericDualOptimizer ("block") | FastGammaOptimizer (charmask="no_block") | FastGammaOptimizer (charmask="no_block", use_color=False) |
---|---|---|---|
Choses from 4-pixel characters like ▚ | Optimizes foreground/background for whole Unicode Block Elements. | Optimizes foreground color for all Unicode rendered in single cell. | Same, but does't use terminal colors. |
Good color representation | Good color and crisper image | Crisp edges with black | Pure art, no color. |
Foreground & background | Foreground & background | Just foreground | No color |
~5Hz | ~4Hz | ~1Hz | ~2Hz |
O(S*T), T=7 | O(S*T), T=24 | O(S*log(T)), T=5553 | O(S*log(T)), T=5553 |
Where S
is the number of 16x8 pixel samples to optimize for and T
is the number of templates.
See it yourself
Use the included termview
script to browse images with all renderers. First, install the optional dependency:
$ pip install 'img2unicode[termview]'
then execute:
termview examples/obama.jpg
or use imgcat
to display an image in your terminal:
imgcat examples/obama.jpg
More samples
To see how other optimizers compare to each other, see examples/README.md.
To see more eyecandy of photos, videos and plots, see the matrach/img2unicode-demos repo
TODO
- write more docs, document code
- describe how it works in readme
- solve foreground & background optimization sublinear in templates
- add support for Unicode 13 Legacy Computing block
- add support for edges optimization in FastDualGenericOptimizer
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file img2unicode-0.1a8.tar.gz
.
File metadata
- Download URL: img2unicode-0.1a8.tar.gz
- Upload date:
- Size: 19.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75c914d9c731f48806326ac528447af693b59114c2f0e28c6f384477e2ef89d7 |
|
MD5 | 502ba12ef00e35b48172cd1e05f462dc |
|
BLAKE2b-256 | d0450221cfd003f547ca5613ca92e1e33cd848461086afad6fa838b12188f2d5 |
File details
Details for the file img2unicode-0.1a8-py3-none-any.whl
.
File metadata
- Download URL: img2unicode-0.1a8-py3-none-any.whl
- Upload date:
- Size: 19.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24d930066b269d75b92e68765fe202404f17ad165e88576d52f053ab3ff2e012 |
|
MD5 | 000efc5a28c99d680d8f9dbd82545289 |
|
BLAKE2b-256 | ce8ef923259d3045fff8b2339e86ed37fad9a95475f5fdb346b28f2532f3d0f3 |