Praveen VR
Praveen VR

Reputation: 1564

Image cropping issue in C#

In my asp.net C# application, I am trying to crop the below image:

enter image description here

I have selected only the face part, but the cropped image always selecting from top left corner like below:

enter image description here

I am using the below code to crop image:

  Rectangle sourceRect = new Rectangle(iX1, iY1, w, h);
  System.Drawing.Image imgNew = CropImage(imgOrig, sourceRect);
  private static System.Drawing.Image CropImage(System.Drawing.Image img, Rectangle    cropArea)
    {
        Bitmap bmpImage = new Bitmap(img);
        Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
        img.Dispose();
        return (System.Drawing.Image)bmpCrop;
    }

Upvotes: 0

Views: 294

Answers (1)

Levi Botelho
Levi Botelho

Reputation: 25234

Use this code to crop your image.

static Bitmap CropImage(Image originalImage, Rectangle sourceRectangle, Rectangle destinationRectangle)
{
    var croppedImage = new Bitmap(destinationRectangle.Width, destinationRectangle.Height);
    using (var graphics = Graphics.FromImage(croppedImage))
    {
        graphics.DrawImage(originalImage, destinationRectangle, sourceRectangle, GraphicsUnit.Pixel);
    }

    return croppedImage;
}

The problem is that your original algorithm doesn't specify where to start cropping from. It therefore always starts from the origin, which is not what you want.

Upvotes: 2

Related Questions