#sixel #data #querying #interface #manipulating #byte #serializing-deserializing

sixel-image

查询、操作和序列化/反序列化Sixel数据的接口

1个不稳定版本

0.1.0 2022年7月7日

#1179编码

Download history 649/week @ 2024-03-14 636/week @ 2024-03-21 624/week @ 2024-03-28 680/week @ 2024-04-04 975/week @ 2024-04-11 1139/week @ 2024-04-18 985/week @ 2024-04-25 1144/week @ 2024-05-02 752/week @ 2024-05-09 856/week @ 2024-05-16 947/week @ 2024-05-23 909/week @ 2024-05-30 933/week @ 2024-06-06 936/week @ 2024-06-13 936/week @ 2024-06-20 589/week @ 2024-06-27

3,534 每月下载量
2 个crate中使用 (通过 zellij-server)

MIT 许可证

31KB
718 代码行

sixel-image

此库提供了一个查询、操作和序列化/反序列化六像素数据的接口。

这里提供了一些方法来完成这些操作

  1. 如果您已经拥有了所有的序列化六像素字节,可以直接构建 SixelImage
  2. 如果您想实时“在线”解析字节,请使用 SixelDeserializer (配合sixel-tokenizer 兄弟crate)。

示例

在事先准备好所有序列化字节的情况下(选项1)

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);
}

在线解析字节(选项2)

use sixel_tokenizer::Parser;
use sixel_image::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.as_bytes();
    let mut parser = Parser::new();
    let mut sixel_deserializer = SixelDeserializer::new();
    for byte in bytes {
        parser.advance(&byte, |sixel_event| {
            let _ = sixel_deserializer.handle_event(sixel_event);
        });
    }
    let sixel_image = sixel_deserializer.create_image().unwrap();
    let serialized = sixel_image.serialize();
    println!("{:?}", serialized);
}

许可证

MIT

依赖项

~0.4–0.9MB
~20K SLoC