6个版本

0.5.0-rc42024年5月12日
0.5.0-rc32024年4月22日
0.5.0-rc02024年4月7日
0.4.0 2023年11月16日

#527 in 图像

Download history 119/week @ 2024-04-28 46/week @ 2024-05-05 138/week @ 2024-05-12 158/week @ 2024-05-19 66/week @ 2024-05-26 442/week @ 2024-06-02 199/week @ 2024-06-09 61/week @ 2024-06-16 14/week @ 2024-06-23 55/week @ 2024-06-30 12/week @ 2024-07-07 4/week @ 2024-07-14 26/week @ 2024-07-21 232/week @ 2024-07-28 114/week @ 2024-08-04 113/week @ 2024-08-11

每月485次下载
zune-image 中使用

MIT OR Apache-2.0 OR Zlib

170KB
2.5K SLoC

zune-bmp

一个精简、高效且环保的BMP解码器。

此crate包含一个快速实现的BMP解码器,并包含对规范中怪异部分的电池支持

特性

  • RLE支持
  • 1位、4位、8位、16位、24位和32位支持
  • 高性能

用法

首先将项目添加到您的库/二进制文件中

zune-bmp = "0.4" # Or use cargo add zune-bmp

然后您可以尝试其他配置

use zune_bmp::BmpDecoder;
use zune_bmp::BmpDecoderErrors;

fn main()->Result<(),BmpDecodeErrors>{
    let decoder:Vec<u8> = BmpDecoder::new(b"BMP").decode()?;

}

安全性

解码器在CI中不断进行模糊测试,以确保在恶意输入的情况下不会崩溃,如果样本导致它崩溃,欢迎提出问题。


lib.rs:

一个通用的BMP解码器

此crate具有一个能够快速解码多个BMP图像的BMP解码器

特性

  • no_std 默认启用,具有 alloc 功能
  • 快速
  • 最小依赖
  • 非常小的内部分配。(大多数路径不会分配比输出缓冲区更多的内存)

支持格式

  • RLE(4位和8位)
  • 调色板图像(1位、2位、4位和8位)
  • 遮罩图像(16位和32位格式)

不支持格式

  • 嵌入的PNG和JPEG
  • 嵌入颜色配置文件的照片。(嵌入的颜色配置文件将被忽略)

特性

  • log:使用 log crate 功能在解码时打印图像信息
  • std:允许从实现 std::io::BufRead + std::io::Seek 的任何内容直接解码

用法

建议如果有一个内存缓冲区,您可以使用 ZCursor 来读取,因为它相对于 std::io::Cursor 来说更优化,因为它的方法专门针对 ZByteReaderTrait

use zune_bmp::BmpDecoder;
use zune_core::bytestream::ZCursor;

let decoder:Vec<u8> = BmpDecoder::new(ZCursor::new(b"BMP")).decode().unwrap();

您也可以直接从 bmp 文件中读取。当您没有文件内容在内存中,只想获取像素时,这可能是首选。

建议您将文件包装在 bufreader 中。

这需要 std 功能才能正常工作。

use std::fs::File;
use std::io::BufReader;
use zune_bmp::BmpDecoder;
// read from a file
let source = BufReader::new(File::open("./image.bmp").unwrap());
// only run when std is enabled, otherwise zune_core doesn't implement the ZByteReader trait
// on File since it doesn't exist in `no_std` land
#[cfg(feature = "std")]
let decoder = BmpDecoder::new(source);

安全性

解码器在CI中不断进行模糊测试,以确保在恶意输入的情况下不会崩溃,如果样本导致它崩溃,欢迎提出问题。

性能

BMP 不是一个计算密集型的图像格式,这个crate在任何可能的情况下都不应该是瓶颈,只是以防万一你认为它在任何方面都减慢了您的速度。

依赖项

~87KB