Insa

insa version on crates.io

Insa converts raster bitmap images to text / ansi escapes. Why? Shape detection and matching appropriate glyph, rather than just luminosity => char. Let terminal based apps show some basic graphics, too - mail, chat, file browser...

This is a cargo lib insa and also a command line tool insa and insa-rasterize

The original of 400px width is converted to 50 chars. One character takes 8px width and 16px height.

original

sh insa docs/insa.jpeg

insa blocks

sh insa --style plain docs/insa.jpeg

insa blocks

Notice how the blocks (default) style brings perhaps double the precision and fidelity with the same amount of characters as it detects sub-block shapes.

You can supply your own brushes to make ascii art, too, with the lib. For example:

logo original

sh insa --style simple-on-dark docs/logo.png

logo ascii art

Tool usage

sh cargo install insa insa --help insa-rasterize --help

Lib usage

sh cargo add insa

let img = "docs/insa.jpeg"; let img = image::open(img).expect("opening the image"); let mut insa = insa::Insa::blocks(); for ((col, row), symbol) in insa.convert(&img) { if col == 0 && row != 0 { println!("\x1b[0m"); } print!("{symbol}"); } println!("\x1b[0m");

Features

The fontdue feature enables rasterization.

License

MIT with exceptions