-
-
Notifications
You must be signed in to change notification settings - Fork 444
Open
Description
Magick.NET version
Magick.NET-Q16-x64 14.10.2
Environment (Operating system, version and so on)
Windows 11 26200.7840, .NET 10.0, C# 14.0
Description
I need to apply a solid color to the four rounded corners of an image. Here's my code:
using ImageMagick;
using ImageMagick.Drawing;
using static ImageMagick.CompositeOperator;
using static ImageMagick.MagickColors;
using MagickImage img = new("lena_std.tif");
var (w, h) = (img.Width, img.Height);
var r = .3 * Math.Min(w, h);
using MagickImage mask = new(Black, w, h);
new Drawables().FillColor(White).RoundRectangle(0, 0, w, h, r, r).Draw(mask);
img.SetWriteMask(mask);
using MagickImage colorLayer = new(Aqua, w, h);
img.Composite(colorLayer, Over);
img.RemoveWriteMask();
img.Write("lena_std_mod1.tif");Make a black-and-white WriteMask and apply it to the target image, then make a solid-color image and Composite. The result is as expected. To minimize intermediate images, I switched to drawing a solid-color rectangle:
img.SetWriteMask(mask);
new Drawables().FillColor(Aqua).Rectangle(0, 0, w, h).Draw(img);
img.RemoveWriteMask();
img.Write("lena_std_mod2.tif");The result is a transparent center and solid-colored corners, without anything of Lena. Is there a bug or am I using it incorrectly?
Steps to Reproduce
using ImageMagick;
using ImageMagick.Drawing;
using static ImageMagick.CompositeOperator;
using static ImageMagick.MagickColors;
using MagickImage img = new("lena_std.tif");
var (w, h) = (img.Width, img.Height);
var r = .3 * Math.Min(w, h);
using MagickImage mask = new(Black, w, h);
new Drawables().FillColor(White).RoundRectangle(0, 0, w, h, r, r).Draw(mask);
img.SetWriteMask(mask);
using MagickImage colorLayer = new(Aqua, w, h); // Here!
img.Composite(colorLayer, Over);
img.RemoveWriteMask();
img.Write("lena_std_mod1.tif");using ImageMagick;
using ImageMagick.Drawing;
using static ImageMagick.MagickColors;
using MagickImage img = new("lena_std.tif");
var (w, h) = (img.Width, img.Height);
var r = .3 * Math.Min(w, h);
using MagickImage mask = new(Black, w, h);
new Drawables().FillColor(White).RoundRectangle(0, 0, w, h, r, r).Draw(mask);
img.SetWriteMask(mask);
new Drawables().FillColor(Aqua).Rectangle(0, 0, w, h).Draw(img); // Here!
img.RemoveWriteMask();
img.Write("lena_std_mod2.tif");Images
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels