1 个不稳定版本

0.1.0 2022 年 10 月 30 日

#916 in 图像

MIT/Apache

26KB
576

DTM 图像格式

DTM 图像格式的快速编码/解码器。

DTM 图像格式是一个支持一到四个通道的 16 位无损图像格式。其目的是作为一个(5x - 10x)比 png 更快的替代品,具有可比的压缩率。

此格式是为了压缩大型地形高程图(也称为数字地形模型)而开发的,因此得名。

示例

use dtm::DTM;

fn main() {
    let descriptor1 = DTM {
        pixel_size: 2,
        channel_count: 1,
        width: 16,
        height: 16,
    };
    let data1 = vec![0u8; descriptor1.image_size()];

    descriptor1.encode_file("image.dtm", &data1).unwrap();
    let (descriptor2, data2) = DTM::decode_file("image.dtm").unwrap();

    assert_eq!(descriptor1, descriptor2);
    assert_eq!(data1, data2);
}

格式

DTM 格式受 QOI 格式的启发,并利用了四种简单的压缩思想。此外,还使用 Paeth 滤波器以实现更好的局部重用。

注意:此格式目前不稳定,也没有正式指定。我可能会扩展它以支持 8 位和 32 位图像。

uncompressed |         11111111 | byte1 | byte2 |  
mru cache    | 00 |       index |                   cache-size:  64
single dif   | 01 |         dif |                   6 bit dif:   [-32, 31] 
double dif   | 10 | dif1 | dif2 |                   3 bit dif:   [ -4,  3]
run lenght   | 11 |         run |                   run-length:  [  1, 63]

许可证

DTM 图像格式可根据您的选择在以下两种许可证下使用:

无运行时依赖