50 个版本 (4 个破坏性版本)
0.5.9 | 2024 年 8 月 6 日 |
---|---|
0.5.5 | 2024 年 7 月 25 日 |
#147 in 图像
每月 1,885 次下载
用于 4 crates
1MB
22K SLoC
Rust 颜色处理和转换工具。
目标是提供对常见转换和 SIMD 选项的支持,以实现高性能的常见转换路径
通常 SIMD 快速路径比原始实现快 5-10 倍
允许在以下颜色空间之间进行转换
- Rgb/Rgba/Rgba1010102/Rgb565/RgbF16
- HSL
- HSV
- CIE LAB
- CIE LUV
- CIE LCh
- XYZ
- sigmoidal
- Oklab
- Oklch
- Jzazbz
- Jzczhz
- lαβ (l-alpha-beta)
性能
有一些预构建函数,例如。
srgb_to_lab(src_bytes, width * components, &mut lab_store, width * 3 * std::mem::size_of::<f32>() as u32, width, height);
预构建解决方案比原始实现快 3-5 倍。如果您的情况适合使用预构建函数,则可以通过 AVX、NEON 和 SSE 来提高速度。如果您禁用了或未使用具有这些功能的 CPU,则不会获得任何好处。
此外,还有针对 x86-64 的 fma
目标功能。
在编译时必须激活目标功能 +avx2
以正确编译 avx2 指令。即使使用运行时调度,这也是一个重要的步骤。
依赖关系
~1MB
~20K SLoC