@Sneiksus

Почему увеличивается размер файла картинки после масштабирования?

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 раз, и почему он вообще увеличивается?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 2
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Daemon23RUS
@Daemon23RUS
CompressionRle - покопайтесь в документации, EncoderParameter
Вы сохраняете BMP без компрессии
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы