2 个不稳定版本

使用旧 Rust 2015

0.2.0 2016年9月4日
0.1.0 2016年9月4日

#796 in 图像

Download history 89/week @ 2024-03-13 135/week @ 2024-03-20 132/week @ 2024-03-27 116/week @ 2024-04-03 98/week @ 2024-04-10 90/week @ 2024-04-17 106/week @ 2024-04-24 100/week @ 2024-05-01 101/week @ 2024-05-08 98/week @ 2024-05-15 117/week @ 2024-05-22 84/week @ 2024-05-29 75/week @ 2024-06-05 73/week @ 2024-06-12 89/week @ 2024-06-19 73/week @ 2024-06-26

319 每月下载量
8 crate 中使用

MIT 许可证

50KB
999

Exoquant 0.1.0

Exoquant 是一个用 Rust 编写的非常高质量的图像量化库,具有基本颜色量化、K-Means 调色板优化和重映射以及 Floyd-Steinberg 和有序抖动器的抖动功能。

此库版本的代码是对 2004 年编写的一个同名 C 库的改进重写。

用法

将 exoquant 添加到您的 Cargo.toml 作为依赖项

[dependencies]
exoquant = "0.2.0"

基本 API

对于简单用例,有一个方便的函数,它只需输入真彩色图像数据和几个选项,即可返回调色板和索引图像数据作为输出

use exoquant::*;
let image = testdata::test_image();

let (palette, indexed_data) = convert_to_indexed(&image.pixels, image.width, 256,
  &optimizer::KMeans, &ditherer::FloydSteinberg::new());

低级 API

低级 API 允许您完全控制量化工作流程。它允许使用以下用例

  • 仅创建调色板并在自己的自定义代码中进行重映射
  • 将图像重映射到现有调色板或使用不同库创建的调色板
  • 为多个输入图像(或,例如,GIF 的帧)生成单个调色板
  • 实现您自己的自定义抖动器(也可以与基本 API 一起使用)

使用低级 API 对图像进行量化的示例如下

use exoquant::*;
use exoquant::optimizer::Optimizer;

let image = testdata::test_image();

let histogram = image.pixels.iter().cloned().collect();

let colorspace = SimpleColorSpace::default();
let optimizer = optimizer::KMeans;
let mut quantizer = Quantizer::new(&histogram, &colorspace);
while quantizer.num_colors() < 256 {
  quantizer.step();
  // very optional optimization, !very slow!
  // you probably only want to do this every N steps, if at all.
  if quantizer.num_colors() % 64 == 0 {
    quantizer = quantizer.optimize(&optimizer, 4);
  }
}

let palette = quantizer.colors(&colorspace);
// this optimization is more useful than the above and a lot less slow
let palette = optimizer.optimize_palette(&colorspace, &palette, &histogram, 16);

let ditherer = ditherer::FloydSteinberg::new();
let remapper = Remapper::new(&palette, &colorspace, &ditherer);
let indexed_data = remapper.remap(&image.pixels, image.width);

API 文档

点击此处查看 API 文档的在线版本

依赖项

~0–265KB