У меня есть файл изображения, который является 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
Это зависит от алгоритма, который использовался для сжатия файла jpeg. Некоторые алгоритмы более подвержены потерям (теряют качество изображения), чем другие, но выигрывают от меньшего размера.
Происходит то, что в коде jpeg расширяется в растровое изображение, находясь в памяти. Когда он пошел на сохранение формата jpeg 128x128, в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше.
в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше. в коде использовался алгоритм, который обеспечивает меньшее сжатие, чем тот, который использовался для сохранения исходного изображения. Это привело к созданию файла jpeg большего размера, хотя размер самого изображения меньше.В опубликованном коде вы возвращаете не файл JPEG, а растровое изображение (размер несжатого растрового изображения 128x128 24bpp составляет 48кБ). Вы должны сжать его снова, это руководство может помочь.