这个项目能做什么

heic-rs 是一个纯 Rust 实现的 HEIC/HEIF 图像解码器,旨在安全、便携,并摆脱对 C 依赖。该项目强调“无 C 工具链”方法,意味着它可以使用标准 Rust 工具构建,而无需 cmake、pkg-config 或 libheif 等外部库。它严格禁止使用 unsafe 代码,确保内存安全由编译器和运行时检查保证,而不是手动内存管理。 核心功能目前集中在 HEIC 格式的容器部分。这包括解析 ISOBMFF 盒、处理 EXIF 和 ICC 配置文件等元数据,以及管理图像属性,例如旋转、镜像和干净光圈。当前能力的重要部分是网格推导和瓦片合成,这对于解码来自 iPhone 和 Mac 等设备的真实照片至关重要,这些设备将大图像存储为较小瓦片的网格。该库还执行 YUV 到 RGB 的颜色转换,支持各种标准(BT.601、BT.709、BT.2020)和色度上采样方法。 然而,用户必须注意当前状态:HEVC 静止图像解码器尚未链接到该 crate。虽然 `probe()` 函数可以完全用于检查文件元数据,但 `decode()` 函数在到达编解码器接缝时会返回 `Error::Unsupported`。HEVC 解码器正在作为单独的 crate 开发,并将在未来集成。在此之前,该库适用于解析元数据、处理容器结构,以及为像素解码准备数据,一旦 HEVC 模块可用。 该项目支持 `no_std`,并已准备好用于 WebAssembly(wasm32-unknown-unknown),使其成为浏览器图像处理或嵌入式系统的可行选项,在这些系统中,C 依赖是问题。它采用 MIT 或 Apache-2.0 许可证,为其他可能使用 AGPL 等复制左许可证的纯 Rust 解码器提供了一种宽松的替代方案。该设计遵循严格的“SBIO”规则,其中业务逻辑不执行 I/O,保持核心纯净且可测试。安全特性包括边界检查的解析器和通过 `max_pixels` 配置的资源限制,以防止耗尽攻击。