Add hsv bw algorithm

This commit is contained in:
Joscha 2023-07-30 17:31:02 +02:00
parent b71974c440
commit be3fbc635e
2 changed files with 9 additions and 1 deletions

View file

@ -1,11 +1,12 @@
use image::RgbaImage;
use palette::{Hsl, IntoColor, Lab, LinSrgb, Oklab, Srgb};
use palette::{Hsl, Hsv, IntoColor, Lab, LinSrgb, Oklab, Srgb};
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum BwMethod {
SrgbAverage,
LinSrgbAverage,
Hsl,
Hsv,
Cielab,
Oklab,
}
@ -27,6 +28,11 @@ impl BwMethod {
pixel.saturation = 0.0;
pixel.into_color()
}
Self::Hsv => {
let mut pixel: Hsv = pixel.into_color();
pixel.saturation = 0.0;
pixel.into_color()
}
Self::Cielab => {
let mut pixel: Lab = pixel.into_color();
pixel.a = 0.5;

View file

@ -11,6 +11,7 @@ enum BwMethod {
SrgbAverage,
LinSrgbAverage,
Hsl,
Hsv,
Cielab,
Oklab,
}
@ -21,6 +22,7 @@ impl From<BwMethod> for mark::BwMethod {
BwMethod::SrgbAverage => mark::BwMethod::SrgbAverage,
BwMethod::LinSrgbAverage => mark::BwMethod::LinSrgbAverage,
BwMethod::Hsl => mark::BwMethod::Hsl,
BwMethod::Hsv => mark::BwMethod::Hsv,
BwMethod::Cielab => mark::BwMethod::Cielab,
BwMethod::Oklab => mark::BwMethod::Oklab,
}