# 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`](https://crates.io/crates/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](docs/insa.jpeg) ```sh insa docs/insa.jpeg ``` ![insa blocks](docs/insa-blocks.png) ```sh insa --style plain docs/insa.jpeg ``` ![insa blocks](docs/insa-plain.png) 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](docs/logo.png) ```sh insa --style simple-on-dark docs/logo.png ``` ![logo ascii art](docs/logo-simple-on-dark.png) # 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](LICENSE.md)