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.impl Copy for BiLevel
Auto Trait Implementations§
impl RefUnwindSafe for BiLevel
impl Send for BiLevel
impl Sync for BiLevel
impl Unpin for BiLevel
impl UnwindSafe for BiLevel
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more