public void CropFile(Int32 X, Int32 Y, Int32 Width, Int32 Height) { //get byte array from profile byte[] imageBytes = profile.Avatar.ToArray(); //stuff this byte array into a memory stream using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { //write the memory stream out for use ms.Write(imageBytes, 0, imageBytes.Length); //stuff the memory stream into an image to work with System.Drawing.Image img = System.Drawing.Image.FromStream(ms, true); int originWidth = img.Width; int originHeight = img.Height; X = (X * originWidth) / 500; Y = (Y * originHeight) / 350; Width = (Width * originWidth) / 500; Height = (Height * originHeight) / 350; //create the destination (cropped) bitmap Bitmap bmpCropped = new Bitmap(200, 200); //create the graphics object to draw with Graphics g = Graphics.FromImage(bmpCropped); Rectangle rectDestination = new Rectangle(0, 0, bmpCropped.Width, bmpCropped.Height); Rectangle rectCropArea = new Rectangle(X, Y, Width, Height); //draw the rectCropArea of the original image to the rectDestination of bmpCropped g.DrawImage(img, rectDestination, rectCropArea, GraphicsUnit.Pixel); //release system resources g.Dispose(); MemoryStream stream = new MemoryStream(); bmpCropped.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); Byte[] bytes = stream.ToArray(); profile.Avatar = bytes; _profileRepository.SaveProfile(profile); } _view.ShowApprovePanel(); }