Struct image::imageops::colorops::BiLevel [−][src]
pub struct BiLevel;
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);