π¨
auto-palette
is a library that automatically extracts prominent color palettes from images, available as Rust library, WebAssembly and CLI tool.
auto-palette
is a Rust project that offers color palette extraction from images. It consists of the following components:
auto-palette
: Core library for programmatic usage.auto-palette-cli
: Command-line interface for easy usage.auto-palette-wasm
: WebAssembly version for browser usage.
Perfect for developers, designers and anyone needing efficient color palette extraction.
Note
This project is in early development (0.y.z). The API may change at any time and breaking changes may occur without notice.
Theme | Color Palette |
---|---|
(Default) |
![]() |
Colorful |
![]() |
Vivid |
![]() |
Muted |
![]() |
Light |
![]() |
Dark |
![]() |
Note
Photo by Laura Clugston on Unsplash
- Automatically extracts prominent color palettes from images.
- Provides detailed color swatch information (color, position, population)
- Supports multiple extraction algorithms:
DBSCAN
,DBSCAN++
,KMeans
,SLIC
, andSNIC
. - Supports numerous color spaces:
RGB
,HSL
,LAB
,LCHuv
,ANSI256
and more. - Theme-based swatch selection:
Colorful
,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.9.1"
To use command-line interface, install the auto-palette-cli
crate.
cargo install auto-palette-cli
Here is a basic example that demonstrates how to extract the color palette and find the top 5 prominent colors. See the examples directory for more advanced usage.
use auto_palette::{ImageData, Palette};
fn main() {
// Load the image data from the file
let image_data = ImageData::load("./gfx/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 prominent colors in the palette and print their information
let swatches = palette.find_swatches(5).unwrap();
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 --count 6 --color-space rgb --output-format table
+---+-------------------+------------+------------+
| # | Color | Position | Population |
+---+-------------------+------------+------------+
| 1 | RGB(94, 203, 254) | (549, 13) | 109005 |
| 2 | RGB(220, 17, 36) | (59, 374) | 4250 |
| 3 | RGB(4, 14, 29) | (87, 195) | 2533 |
| 4 | RGB(252, 220, 35) | (94, 32) | 2149 |
| 5 | RGB(2, 104, 106) | (366, 329) | 2133 |
| 6 | RGB(209, 86, 145) | (378, 263) | 1126 |
+---+-------------------+------------+------------+
Extracted 182 swatch(es) in 0.344 seconds
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.
If you discover any security vulnerabilities, please do not create a public issue or pull request.
Instead, please follow the Security Policy to report them privately.
This project is distributed under the MIT License. See the LICENSE file for details.