🎨
auto-palette
is a library that automatically extracts prominent color palettes from images, available for Rust ,Wasm and as a CLI tool.
Note
Photo by Laura Clugston on Unsplash
- Automatically extracts prominent color palettes from images.
- Provides detailed information on color, position, and population.
- Supports multiple extraction algorithms, including
DBSCAN
,DBSCAN++
, andKMeans++
. - Supports multiple color spaces, including
RGB
,HSL
, andLAB
. - Supports the selection of prominent colors based on multiple themes, including
Vivid
,Muted
,Light
, andDark
. - Available as a Rust library, Wasm, and a CLI tool.
To use auto-palette
in your Rust project, add it to your Cargo.toml
.
[dependencies]
auto-palette = "0.5.0"
To use command-line interface, install the auto-palette-cli
crate.
cargo install auto-palette-cli
Here is an example of extracting the color palette from an image using the Rust library. See the examples directory for more examples.
use auto_palette::{ImageData, Palette};
fn main() {
// Load the image data from the file
let image_data = ImageData::load("tests/assets/holly-booth-hLZWGXy5akM-unsplash.jpg").unwrap();
// Extract the color palette from the image data
let palette: Palette<f64> = Palette::extract(&image_data).unwrap();
println!("Extracted {} swatches", palette.len());
// Find the 5 dominant colors in the palette and print their information
let swatches = palette.find_swatches(5);
for swatch in swatches {
println!("Color: {}", swatch.color().to_hex_string());
println!("Position: {:?}", swatch.position());
println!("Population: {}", swatch.population());
println!("Ratio: {}", swatch.ratio());
}
}
Here is an example of extracting the color palette from an image using the CLI tool.
$ auto-palette path/to/your_image.jpg -n 6 -c rgb -o table
+---+--------------------+------------+------------+
| # | Color | Position | Population |
+---+--------------------+------------+------------+
| 1 | RGB(221, 226, 222) | (104, 96) | 6778 |
| 2 | RGB(3, 144, 149) | (114, 201) | 5476 |
| 3 | RGB(23, 37, 36) | (120, 300) | 4300 |
| 4 | RGB(36, 88, 131) | (183, 145) | 1348 |
| 5 | RGB(254, 29, 44) | (183, 190) | 779 |
| 6 | RGB(253, 213, 116) | (25, 158) | 567 |
+---+--------------------+------------+------------+
See the CONTRIBUTING guidelines.
Contributions are welcome! For detailed information on how to contribute, please refer to CONTRIBUTING guidelines.
Please note that this project is released with a CODE_OF_CONDUCT. By participating in this project you agree to abide by its terms.
This project is distributed under the MIT License. See the LICENSE file for details.