Итак, у меня есть приложение, которое берет исходное изображение, получает новую новую обрезанную область, а затем сохраняет обрезанную версию изображения в виде нового файла. Он отлично работает с одним существенным недостатком. Новое изображение в среднем в 4 раза больше исходного изображения. В моем тесте у меня была фотография, размер которой на диске ~ 4,5 МБ, а урезанная версия (которая правильно обрезана и выглядит хорошо) составляет ~ 21 МБ на диске. Код выглядит следующим образом:
var originalImage = new Bitmap(imagePath);
var fWidth = originalImage.PhysicalDimension.Width;
var fHeight = originalImage.PhysicalDimension.Height;
float calculatedWidth = GetCroppedWidth();
float calculatedHeight = GetCroppedHeight();
//Draw the image by centering the cropped region on the original
var heightOffset = (fHeight - calculatedHeight) / 2;
var widthOffset = (fWidth - calculatedWidth) / 2;
var sourceRectF = new RectangleF(widthOffset, heightOffset, calculatedWidth, calculatedHeight);
var croppedImage = originalImage.Clone(sourceRectF, originalImage.PixelFormat);
//Save the image
croppedImage.Save(croppedFileName);