#rgb #color-space #color #color-conversion #pixel

lab

将 RGB 颜色转换为 CIE-L*a*b* 颜色空间的工具,并比较颜色差异

18 个版本 (10 个破坏性更新)

使用旧的 Rust 2015

0.11.0 2021 年 7 月 30 日
0.9.0 2021 年 3 月 20 日
0.8.2 2020 年 12 月 10 日
0.8.1 2020 年 8 月 14 日
0.3.0 2017 年 1 月 30 日

#62图像

Download history 11021/week @ 2024-04-20 12360/week @ 2024-04-27 12144/week @ 2024-05-04 12595/week @ 2024-05-11 10370/week @ 2024-05-18 10325/week @ 2024-05-25 12461/week @ 2024-06-01 13640/week @ 2024-06-08 13479/week @ 2024-06-15 10211/week @ 2024-06-22 9139/week @ 2024-06-29 13758/week @ 2024-07-06 14745/week @ 2024-07-13 17902/week @ 2024-07-20 16501/week @ 2024-07-27 15085/week @ 2024-08-03

66,561 每月下载量
用于 49 个 crate(14 个直接使用)

MIT 许可证

62KB
1.5K SLoC

Lab

Lab crate Lab documentation minimum rustc 1.31 TravisCI Build Status AppVeyor Build Status

将 RGB 颜色转换为 L*a*b* 度量工具。

对于此 crate 至少,RGB 颜色被认为是 0 到 255 的 u8 值的组合,而 L*a*b* 颜色则由其自己的使用 f32 值的 struct 表示。

用法

转换单个值

要转换单个值,请使用以下函数之一

  • lab::Lab::from_rgb(rgb: &[u8; 3]) ->Lab
  • lab::Lab::from_rgba(rgba: &[u8; 4]) -> Lab(丢弃第四个 alpha 字节)
  • lab::Lab::to_rgb(&self) -> [u8; 3]
extern crate lab;
use lab::Lab;

let pink_in_lab = Lab::from_rgb(&[253, 120, 138]);
// Lab { l: 66.639084, a: 52.251457, b: 14.860654 }

转换多个值

要转换值的切片

  • lab::rgbs_to_labs(rgbs: &[[u8; 3]]) -> Vec<Lab>
  • lab::labs_to_rgbs(labs: &[Lab]) -> Vec<[u8; 3]>
  • lab::rgb_bytes_to_labs(bytes: &[u8]) -> Vec<Lab>
  • lab::labs_to_rgb_bytes(labs: &[Lab]) -> Vec<u8>
extern crate lab;
use lab::rgbs_to_labs;

let rgbs = vec![
    [0xFF, 0x69, 0xB6],
    [0xE7, 0x00, 0x00],
    [0xFF, 0x8C, 0x00],
    [0xFF, 0xEF, 0x00],
    [0x00, 0x81, 0x1F],
    [0x00, 0xC1, 0xC1],
    [0x00, 0x44, 0xFF],
    [0x76, 0x00, 0x89],
];

let labs = rgbs_to_labs(&rgbs);
extern crate lab;
use lab::rgb_bytes_to_labs;

let rgbs = vec![
    0xFF, 0x69, 0xB6,
    0xE7, 0x00, 0x00,
    0xFF, 0x8C, 0x00,
    0xFF, 0xEF, 0x00,
    0x00, 0x81, 0x1F,
    0x00, 0xC1, 0xC1,
    0x00, 0x44, 0xFF,
    0x76, 0x00, 0x89,
];

let labs = rgb_bytes_to_labs(&rgbs);

这些函数在编译到支持的目标时会使用 x86_64 AVX2 指令。

最小 Rust 版本

Lab 0.8.0 需要 Rust >= 1.36.0 以支持 MaybeUninit 结构体

Lab 0.7.0 需要 Rust >= 1.31.0 以支持 chunks_exact 切片方法

无运行时依赖