Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 month 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 (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-13T19:44:28.000Z (about 1 month ago)
- Last Synced: 2024-10-13T19:49:30.496Z (about 1 month ago)
- Topics: image, rust, terminal
- Language: Rust
- Homepage:
- Size: 154 KB
- Stars: 247
- Watchers: 7
- Forks: 46
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# `viuer`
![ci](https://github.com/atanunq/viuer/workflows/ci/badge.svg)
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)## Usage
Add this to `Cargo.toml`:
```toml
[dependencies]
viuer = "0.8"
```For a demo of the library's usage and example screenshots, see
[`viu`](https://github.com/atanunq/viu).## Examples
```rust
use viuer::{print_from_file, Config};fn main() {
let conf = Config {
// Set offset.
x: 20,
y: 4,
// Set dimensions.
width: Some(80),
height: Some(25),
..Default::default()
};// Starting from row 4 and column 20,
// display `img.jpg` with dimensions 80×25 (in terminal cells).
// Note that the actual resolution in the terminal will be 80×50.
print_from_file("img.jpg", &conf).expect("Image printing failed.");
}
```Or if you have a [DynamicImage](https://docs.rs/image/*/image/enum.DynamicImage.html),
you can use it directly:```rust
// ... `Config` setuplet img = image::DynamicImage::ImageRgba8(image::RgbaImage::new(20, 10));
viuer::print(&img, &conf).expect("Image printing failed.");
```## Docs
Check the [full documentation](https://docs.rs/crate/viuer) for examples and all
the configuration options.