Reputation: 1564
In my asp.net C# application, I am trying to crop the below image:
I have selected only the face part, but the cropped image always selecting from top left corner like below:
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
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