C#, почему изменяют размер изображения, увеличит размер файла

У меня есть файл изображения, который является 6k jpg файл с шириной: 172 пкс и высоко: 172 пкс.

Я использую следующую попытку кода изменить размер его к 128*128 пкс jpg файл:

public static Image ResizeImage(Image img, int width, int height)
    {
        var b = new Bitmap(width, height, PixelFormat.Format24bppRgb);

        using (Graphics g = Graphics.FromImage(b))
        {
            g.DrawImage(img, 0, 0, width, height);
        }

        return b;
    }

Этот код странно увеличил размер файла до 50k, кто-либо может объяснить почему? и как изменить размер изображения к 128*128 пкс и сохранить размер о 6k.

Большое спасибо.

DY

6
задан jball 18 December 2009 в 23:41
поделиться

2 ответа

Это зависит от алгоритма, который использовался для сжатия файла jpeg. Некоторые алгоритмы более подвержены потерям (теряют качество изображения), чем другие, но выигрывают от меньшего размера.

Происходит то, что в коде jpeg расширяется в растровое изображение, находясь в памяти. Когда он пошел на сохранение формата jpeg 128x128, в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше.

в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше.

в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше.

11
ответ дан 8 December 2019 в 13:46
поделиться

В опубликованном коде вы возвращаете не файл JPEG, а растровое изображение (размер несжатого растрового изображения 128x128 24bpp составляет 48кБ). Вы должны сжать его снова, это руководство может помочь.

6
ответ дан 8 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: