Expand description
Fast library for conversion of RGBA images to 8-bit paletted images.
Quantizing an image
let (bytes, width, height) = load_image();
let image = quantizr::Image::new(bytes, width, height)?;
let mut opts = quantizr::Options::default();
opts.set_max_colors(256)?;
let mut result = quantizr::QuantizeResult::quantize(&image, &opts);
result.set_dithering_level(1.0)?;
let mut indexes = vec![0u8; width * height];
result.remap_image(&image, indexes.as_mut_slice())?;
let palette = result.get_palette();
save_image(palette, indexes, width, height);
See example/
directory for complete example code.
Quantizing multiple image into a single palette
let mut hist = quantizr::Histogram::new();
let (bytes1, width1, height1) = load_image1();
let image1 = quantizr::Image::new(bytes1, width1, height1)?;
hist.add_image(&image1);
let (bytes2, width2, height2) = load_image2();
let image2 = quantizr::Image::new(bytes2, width2, height2)?;
hist.add_image(&image2);
let mut opts = quantizr::Options::default();
opts.set_max_colors(256)?;
let mut result = quantizr::QuantizeResult::quantize_histogram(&hist, &opts);
result.set_dithering_level(1.0)?;
let mut indexes1 = vec![0u8; width * height];
result.remap_image(&image1, indexes1.as_mut_slice())?;
let mut indexes2 = vec![0u8; width * height];
result.remap_image(&image2, indexes2.as_mut_slice())?;
let palette = result.get_palette();
save_image1(palette, indexes1, width1, height1);
save_image2(palette, indexes2, width2, height2);
Structs
- RGBA color
- Color histogram
- Image reference containing pixel data and dimensions info
- Quantization options
- Color palette