insa 1.0.0

Insa renders imaxes to text - it's a terminal bitmap graphics library
Documentation
# Insa

<a href="https://crates.io/crates/insa" rel="ugc noopener"><img src="https://img.shields.io/crates/v/insa.svg" alt="insa version on crates.io" decoding="async" width="102" height="20"></a>

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)