diff --git a/src/ImageSharp/Colors/ColorTransforms.cs b/src/ImageSharp/Colors/ColorTransforms.cs
index 11d0139be..5993ac699 100644
--- a/src/ImageSharp/Colors/ColorTransforms.cs
+++ b/src/ImageSharp/Colors/ColorTransforms.cs
@@ -150,6 +150,42 @@ namespace ImageSharp
return new Color(Pack(ref result));
}
+ ///
+ /// Selects the darker of the backdrop and source colors.
+ /// The backdrop is replaced with the source where the source is darker; otherwise, it is left unchanged.
+ ///
+ /// The backdrop color.
+ /// The source color.
+ ///
+ /// The .
+ ///
+ public static Color Darken(Color backdrop, Color source)
+ {
+ Vector4 vb = backdrop.ToVector4();
+ Vector4 vs = source.ToVector4();
+ Vector4 result = Vector4.Min(vb, vs);
+ result.W = vb.W;
+ return new Color(Pack(ref result));
+ }
+
+ ///
+ /// Selects the lighter of the backdrop and source colors.
+ /// The backdrop is replaced with the source where the source is lighter; otherwise, it is left unchanged.
+ ///
+ /// The backdrop color.
+ /// The source color.
+ ///
+ /// The .
+ ///
+ public static Color Lighten(Color backdrop, Color source)
+ {
+ Vector4 vb = backdrop.ToVector4();
+ Vector4 vs = source.ToVector4();
+ Vector4 result = Vector4.Max(vb, vs);
+ result.W = vb.W;
+ return new Color(Pack(ref result));
+ }
+
///
/// Linearly interpolates from one color to another based on the given weighting.
///
diff --git a/tests/ImageSharp.Tests/Colors/ColorTransformTests.cs b/tests/ImageSharp.Tests/Colors/ColorTransformTests.cs
index dc710549b..41835e7c6 100644
--- a/tests/ImageSharp.Tests/Colors/ColorTransformTests.cs
+++ b/tests/ImageSharp.Tests/Colors/ColorTransformTests.cs
@@ -56,5 +56,19 @@ namespace ImageSharp.Tests.Colors
Color overlay = Color.Overlay(Backdrop, Source);
Assert.True(overlay == new Color(153, 82, 0));
}
+
+ [Fact]
+ public void Darken()
+ {
+ Color darken = Color.Darken(Backdrop, Source);
+ Assert.True(darken == new Color(0, 102, 0));
+ }
+
+ [Fact]
+ public void Lighten()
+ {
+ Color lighten = Color.Lighten(Backdrop, Source);
+ Assert.True(lighten == new Color(204, 102, 153));
+ }
}
}