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

View file

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