#color-palette #color #palette #quantization #image #mmcq

palette_extract

Leptonica的修改版媒体切割量化算法的Rust移植

1个不稳定版本

0.1.0 2022年3月6日

900图像 中排名

Download history 25/week @ 2024-03-11 32/week @ 2024-03-18 7/week @ 2024-03-25 51/week @ 2024-04-01 37/week @ 2024-04-08 114/week @ 2024-04-15 89/week @ 2024-04-22 31/week @ 2024-04-29 24/week @ 2024-05-06 28/week @ 2024-05-13 59/week @ 2024-05-20 23/week @ 2024-05-27 34/week @ 2024-06-03 47/week @ 2024-06-10 25/week @ 2024-06-17 14/week @ 2024-06-24

122 每月下载量

MIT 许可证

705KB
627

palette-extract-rs

用于从图像中提取颜色调板的Rust库!

基于对Leptonica的修改版中值切割量化算法的移植。

示例

drawing[^1]

color1 color2 color3 color4 color5 color6 color7 color8 color9

[^1]: 图片来源:João Pacheco

致谢

此Rust实现的修改版中值切割量化(MMCQ)改编自Kazuki Ohara的ColorThiefSwift

特别感谢

安装

使用时,请将以下内容添加到Cargo.toml中的[dependencies]

palette_extract = "0.1.0"

使用方法

使用库包括调用带有表示为u8切片的一组RGB或RGBA像素的get_palette_rgbget_palette_with_options

基本

使用4个RGB表示的红色像素的最小示例如下

use palette_extract::{get_palette_rgb, Color};

fn main() {
    let pixels: [u8; 12] = [255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0];

    let r = get_palette_rgb(&pixels);

    assert_eq!(r.len(), 1);
    assert_eq!(r[0], Color::new(252, 4, 4));
}

图片来自文件/其他地方

以下是通过利用image crate读取和解析图像文件来提取图像颜色调板的一种方法(请参阅examples目录中的完整示例)

    let image_path = "./path/to/image.jpg";

    // open and decode the image using the `image` crate
    let img = image::open(image_path).unwrap();

    // grab a reference to the underlying pixels/RGB buffer
    let pixels = img.as_bytes();

    // extract the color palette
    let palette = get_palette_rgb(&pixels);

    // output the extracted color palette
    palette.iter().for_each(|x| println!("{:?}", x));

更多使用示例可以在examples目录中找到!

背景/进一步阅读

无运行时依赖