using (var image = Image.FromStream(file.InputStream))
{
...
var newHeight = (int)Math.Round(image.Height / factor, MidpointRounding.AwayFromZero); // чем меньший factor, тем меньше будет уменьшаться размер картинки
var newWidth = (int)Math.Round(image.Width / factor, MidpointRounding.AwayFromZero);
using (var newImage = new Bitmap(newHeight ,newWidth ))
{
using (var graphics = Graphics.FromImage(newImage))
{
graphics.DrawImage(image, 0, 0, newHeight , image.newWidth );
}
var newImageStream = ToStream(newImage, imageFormat, encoderQuality);
file.InputStream.Position = 0;
return new STFileStream
{
ContentLength = (int)newImageStream.Length,
ContentType = contenType,
FileName = file.FileName,
InputStream = newImageStream
};
}
}
Код выше используется для масштабирования картинки под заданый формат, для этого высчитывается
factor. Чем он выше тем больше уменшается размер сторон картинки. Проблема состоит в том, что если он маленький и картинка сильно не меняется, то размер файла становится больше, хотя по идее должен был уменьшиться или остаться таким же. Тестировал на картинке которая занимала 2мб, формат ВМР, фактор был 1.7. Новая картинка весила 11мб. Что можно сделать чтобы размер не увеличивался в 6 раз, и почему он вообще увеличивается?