sixel-image

This library provides an interface for querying, manipulating and serializing/deserializing sixel data.

There are several methods provided here to do this:

  1. If you already have all the serialized sixel bytes, construct SixelImage directly
  2. If you'd like to parse bytes in real time "on the wire", use SixelDeserializer (accompanied by the sixel-tokenizer sister crate).

Example

With all the serialized bytes ahead of time (option 1)

```rust use sixel_image::SixelImage;

fn main() { let sample = " \u{1b}Pq \"2;1;100;200 #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ \u{1b}\ "; let bytes = sample.as_bytes();

let sixel_image = SixelImage::new(&bytes).unwrap();
let serialized = sixel_image.serialize();
println!("{:?}", serialized);

} ```

Parsing bytes "on the wire" (option 2)

```rust use sixeltokenizer::Parser; use sixelimage::SixelDeserializer;

fn main() { let sample = " \u{1b}Pq \"2;1;100;200 #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ \u{1b}\ "; let bytes = sample.asbytes(); let mut parser = Parser::new(); let mut sixeldeserializer = SixelDeserializer::new(); for byte in bytes { parser.advance(&byte, |sixelevent| { let _ = sixeldeserializer.handleevent(sixelevent); }); } let sixelimage = sixeldeserializer.createimage().unwrap(); let serialized = sixelimage.serialize(); println!("{:?}", serialized); } ```

License

MIT