pub struct BiLevel;
Expand description
A bi-level color map
Examples
use image::imageops::colorops::{index_colors, BiLevel, ColorMap};
use image::{ImageBuffer, Luma};
let (w, h) = (16, 16);
// Create an image with a smooth horizontal gradient from black (0) to white (255).
let gray = ImageBuffer::from_fn(w, h, |x, y| -> Luma<u8> { [(255 * x / w) as u8].into() });
// Mapping the gray image through the `BiLevel` filter should map gray pixels less than half
// intensity (127) to black (0), and anything greater to white (255).
let cmap = BiLevel;
let palletized = index_colors(&gray, &cmap);
let mapped = ImageBuffer::from_fn(w, h, |x, y| {
let p = palletized.get_pixel(x, y);
cmap.lookup(p.0[0] as usize)
.expect("indexed color out-of-range")
});
// Create an black and white image of expected output.
let bw = ImageBuffer::from_fn(w, h, |x, y| -> Luma<u8> {
if x <= (w / 2) {
[0].into()
} else {
[255].into()
}
});
assert_eq!(mapped, bw);
Trait Implementations§
source§impl ColorMap for BiLevel
impl ColorMap for BiLevel
source§fn has_lookup(&self) -> bool
fn has_lookup(&self) -> bool
Indicate NeuQuant implements lookup
.
source§fn index_of(&self, color: &Luma<u8>) -> usize
fn index_of(&self, color: &Luma<u8>) -> usize
Returns the index of the closest match of
color
in the color map.