11 个稳定版本
3.1.6 | 2024 年 8 月 7 日 |
---|---|
3.1.5 | 2024 年 7 月 7 日 |
3.1.4 | 2023 年 10 月 21 日 |
3.0.3 | 2023 年 2 月 9 日 |
2.12.0 |
|
#367 in 图像
每月 2,220 次下载
用于 13 个 crate (5 个直接)
420KB
1K SLoC
以 sRGB 格式加载图像
是一些库的粘合代码,可以正确地将 JPEG、PNG 或(可选)WebP 或 AVIF 图像加载到内存中,考虑 PNG 数据块中的颜色配置文件元数据、EXIF 数据和应用程序标记。如需则将 CMYK 转换为 RGB。
cargo add load_image
fn main() -> Result<(), Box<dyn std::error::Error>> {
let path = std::env::args().nth(1).ok_or("Please provide image file path")?;
let img = load_image::load_image(path)?;
}
返回的 Image
是
struct Image {
pub width: usize,
pub height: usize,
pub bitmap: enum ImageData {
RGB8(Vec<RGB8>),
RGBA8(Vec<RGBA8>),
RGB16(Vec<RGB16>),
RGBA16(Vec<RGBA16>),
GRAY8(Vec<GRAY8>),
GRAY16(Vec<GRAY16>),
GRAYA8(Vec<GRAYA8>),
GRAYA16(Vec<GRAYA16>),
}
}
位图是打包的,所以 x + y * width
给出像素的位置 (对于方便操作,请参阅 imgref)。
load_image
函数不会引发恐慌,但如果启用了 mozjpeg
特性,它将依赖内部展开,并且与使用 panic = "abort" 选项编译的crate不兼容。
依赖
~2.5–8MB
~153K SLoC