Search code examples
c#imagemagickimagickimagemagick-convert

ImageMagick Command line to Magick.net C#


Hey all I have the following command line that works great for what I am looking to want to do but unable to translate it over to the C# Magick.net version:

convert YnTf9.png ^
( -clone 0 -blur 0x5 -gravity center -crop 400x300+0+0 +repage ) ^
( -clone 0 -resize x300 ) ^
-delete 0 ^
-gravity center -compose over -composite ^
result.png

So far I have this c# code:

using (MagickImage image = new MagickImage(@"C:\Users\David\Pictures\YnTf9.png"))
{
     using (MagickImage backgroundImg = (MagickImage)image.Clone())
     {
          backgroundImg.Blur(0, 5);
          backgroundImg.Crop(400, 300, Gravity.Center);
          backgroundImg.RePage();
          backgroundImg.Resize(0, 300);

          image.Composite(backgroundImg, Gravity.Center, CompositeOperator.SrcOver);
          image.Write("CODETest.png");
     }
}

After just doing that I ran it and it came out as just the normal image:

enter image description here

When it should look like this:

enter image description here

so I know im not doing ether the correct order and/or correct commands.

Would be great if someone could translate it for me! :)


Solution

  • Got it

    using (MagickImage image = new MagickImage(bitmap))
        {
            using (IMagickImage backgroundImg = image.Clone())
            {
                backgroundImg.Blur(0, 5);
                backgroundImg.Crop(400, 300, Gravity.Center);
                backgroundImg.RePage();
    
                image.Resize(0, 300);
    
                IMagickImage _shadow = new MagickImage(MagickColor.FromRgb(0, 0, 0), image.Width + 20, 400);
    _shadow.Shadow(backgroundImg.Width, 400, 10, (Percentage)90);
    
                backgroundImg.Composite(_shadow, Gravity.Center, CompositeOperator.Atop);
                backgroundImg.Composite(image, Gravity.Center, CompositeOperator.SrcAtop);
                backgroundImg.Write(@"C:\Users\David\Pictures\NEWest.png");
            }
        }