#color-conversion #lab #xyz #hsl #hsv #luv #format-conversion

colorutils-rs

高性能颜色格式处理和转换工具

50 个版本 (4 个破坏性版本)

0.5.9 2024 年 8 月 6 日
0.5.5 2024 年 7 月 25 日

#147 in 图像

Download history 129/week @ 2024-05-13 14/week @ 2024-05-20 849/week @ 2024-05-27 955/week @ 2024-06-03 1276/week @ 2024-06-10 846/week @ 2024-06-17 58/week @ 2024-06-24 4/week @ 2024-07-01 363/week @ 2024-07-08 352/week @ 2024-07-15 1185/week @ 2024-07-22 359/week @ 2024-07-29 199/week @ 2024-08-05 61/week @ 2024-08-12

每月 1,885 次下载
用于 4 crates

Apache-2.0 OR BSD-3-Clause

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