1个不稳定版本
0.1.0 | 2022年3月6日 |
---|
900 在 图像 中排名
122 每月下载量
705KB
627 行
palette-extract-rs
用于从图像中提取颜色调板的Rust库!
基于对Leptonica的修改版中值切割量化算法的移植。
示例
[^1]
[^1]: 图片来源:João Pacheco
致谢
此Rust实现的修改版中值切割量化(MMCQ)改编自Kazuki Ohara的ColorThiefSwift。
特别感谢
- Sven Woltmann - Java实现Color Thief Java。ColorThiefSwift是这个的移植。
- Lokesh Dhakar - JavaScript版本Color Thief,它启发了许多移植。
- 当然,还有Dan Bloomberg,他为MMCQ的原始论文以及Leptonica中的参考实现做出了贡献。
安装
使用时,请将以下内容添加到Cargo.toml
中的[dependencies]
palette_extract = "0.1.0"
使用方法
使用库包括调用带有表示为u8
切片的一组RGB或RGBA像素的get_palette_rgb
或get_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
目录中找到!
背景/进一步阅读
-
描述MMCQ算法的论文:http://leptonica.org/papers/mediancut.pdf
-
一篇关于提取色彩调板的多种方式的精彩文章:色彩量化