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 2019 年 3 月 3 日

#367 in 图像

Download history 665/week @ 2024-05-01 368/week @ 2024-05-08 337/week @ 2024-05-15 351/week @ 2024-05-22 392/week @ 2024-05-29 385/week @ 2024-06-05 565/week @ 2024-06-12 722/week @ 2024-06-19 703/week @ 2024-06-26 1073/week @ 2024-07-03 816/week @ 2024-07-10 489/week @ 2024-07-17 786/week @ 2024-07-24 632/week @ 2024-07-31 482/week @ 2024-08-07 253/week @ 2024-08-14

每月 2,220 次下载
用于 13 个 crate (5 个直接)

GPL-3.0+

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