Encode an image with [sixel-sys].
⚠️ This is my first crate that uses unsafe
and FFI. Please inspect the source code yourself, the
crate is very small. PRs are welcome.
To write a sixel to a file, [sixel-rs] is safer and has more options.
Despite being called sixel-bytes, this crates produces a String
.
Encode a generated image to sixel and print it:
```rust
let mut bytes: Vec
let data = sixelbytes::sixelstring( &bytes, 255, 255, sixelbytes::PixelFormat::RGB888, sixelbytes::DiffusionMethod::Atkinson, ).unwrap(); assert_eq!(&data[..3], "\u{1b}Pq"); ```
Encode an image from the [image] crate to sixel and print it: ```rust let image = image::io::Reader::open("./assets/Ada.png") .unwrap() .decode() .unwrap() .intorgba8(); let bytes = image.asraw();
match sixelbytes::sixelstring( bytes, image.width() as , image.height() as _, sixelbytes::PixelFormat::RGBA8888, sixel_sys::DiffusionMethod::Stucki, ) { Err(err) => eprintln!("{err}"), Ok(data) => print!("{data}"), } ```
sixel <path/to/image>
uses the [image] crate to load an image with supported formats, convert
to RGBA8888, encode to sixel, and dump the resulting string to stdout. It must be built with
the image
feature.
test-sixel
just generates some 255x255 image with a gradient and dumps it to stdout.
Only certain terminals / terminal emulators have the capability to render sixel graphics. See https://www.arewesixelyet.com/ for a list of programs that support sixels.
Try running xterm
with -ti 340
.
The image
feature is disabled by default but needed for the sixel
binary.
Current version: 0.2.2
License: MIT