Crate lab[−][src]
Expand description
Lab
Tools for converting RGB colors to L*a*b* measurements.
RGB colors, for this crate at least, are considered to be composed of u8
values from 0 to 255, while L*a*b* colors are represented by its own struct
that uses f32
values.
Usage
Converting single values
To convert a single value, use one of the functions
lab::Lab::from_rgb(rgb: &[u8; 3]) -> Lab
lab::Lab::from_rgba(rgba: &[u8; 4]) -> Lab
(drops the fourth alpha byte)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 }
Converting multiple values
To convert slices of values
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);
These functions will use x86_64 AVX2 instructions if compiled to a supported target.
Minimum Rust version
Lab 0.7.0 requires Rust >= 1.31.0 for the chunks_exact slice method
Structs
Struct representing a color in cylindrical CIELCh color space
Struct representing a color in CIALab, a.k.a. L*a*b*, color space
Functions
Lab to RGB conversion that returns RGB triples flattened into a Vec<u8>
Convenience function to map a slice of Lab values to RGB values in serial
RGB to Lab conversion that operates on a flat &[u8]
of consecutive RGB triples.
Convenience function to map a slice of RGB values to Lab values in serial