https://github.com/atanunq/viuer
Rust library for displaying images in the terminal.
https://github.com/atanunq/viuer
image rust terminal
Last synced: about 1 year ago
JSON representation
Rust library for displaying images in the terminal.
- Host: GitHub
- URL: https://github.com/atanunq/viuer
- Owner: atanunq
- License: mit
- Created: 2020-09-15T20:23:04.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-22T14:34:28.000Z (over 1 year ago)
- Last Synced: 2025-05-14T03:15:58.158Z (about 1 year ago)
- Topics: image, rust, terminal
- Language: Rust
- Homepage:
- Size: 181 KB
- Stars: 295
- Watchers: 6
- Forks: 50
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# `viuer`

Display images in the terminal with ease.
`viuer` is a Rust library that makes it easy to show images in the terminal.
It has a straightforward interface and is configured through a single struct.
The default printing method is through lower half blocks (`▄` or `\u2585`).
However some custom graphics protocols are supported. They result in full
resolution images being displayed in specific environments:
- [Kitty](https://sw.kovidgoyal.net/kitty/graphics-protocol.html)
- [iTerm](https://iterm2.com/documentation-images.html)
- [Sixel](https://github.com/saitoha/libsixel) (behind the `sixel`
feature gate)
For a demo of the library's usage and example screenshots, see
[`viu`](https://github.com/atanunq/viu?tab=readme-ov-file#examples).
## Usage
With the default features, only [image::DynamicImage](https://docs.rs/image/latest/image/enum.DynamicImage.html) can be printed:
```rust
use viuer::{print, Config};
let conf = Config {
// Start from row 4 and column 20.
x: 20,
y: 4,
..Default::default()
};
let img = image::DynamicImage::ImageRgba8(image::RgbaImage::new(20, 10));
print(&img, &conf).expect("Image printing failed.");
```
And with the `print-file` feature, `viuer` can work with files, too:
```rust
use viuer::{print_from_file, Config};
let conf = Config {
// Set dimensions.
width: Some(80),
height: Some(25),
..Default::default()
};
// Display `img.jpg` with dimensions 80×25 in terminal cells.
// The image resolution will be 80×50 because each cell contains two pixels.
print_from_file("img.jpg", &conf).expect("Image printing failed.");
```
## Docs
Find all the configuration options in the [full documentation](https://docs.rs/viuer/latest/viuer/).