1 个不稳定版本
0.1.0 | 2022 年 10 月 30 日 |
---|
#916 in 图像
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 图像格式可根据您的选择在以下两种许可证下使用:
- MIT 许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
- Apache 许可证,版本 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
。