Основы изменения размера изображений или что случилось с размером изображения? - PullRequest
1 голос
/ 23 января 2010

Я пишу программу, которая изменяет размер изображений следующим образом:

Image originalImage = Image.FromFile(pathToOriginalPicture);

Bitmap b = new Bitmap(newWidth, newHeight);
Graphics g = Graphics.FromImage(b);

g.DrawImage(originalImage, 0, 0, newWidth, newHeight);
g.Dispose();

b.Save(pathToOutputPicture, ImageFormat.Jpeg);

Я пытался установить:

newWidth = originalImage.Width;
newHeight = originalImage.Height;

В результате размер измененного файла изображения составил ~ 900 КБ, а исходного файла ~ 4 МБ.

Почему это происходит? Качество оригинального изображения лучше, чем измененное? Как?

Я открыл обе картинки в Photoshop и вижу, что исходная картинка была 72ppi, а уменьшенная - 96ppi. Это почему ? Могу ли я контролировать это?

Большое спасибо за ваше время!

Ответы [ 2 ]

2 голосов
/ 23 января 2010

Вы не сообщаете нам оригинальный формат изображения, но сохраняете его в формате JPEG:

b.Save (pathToOutputPicture, ImageFormat.Jpeg);

JPEG - формат сжатия с потерями.

Помимо потери данных, JPEG также может выводить различное качество (которое настраивается).

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

Отсюда и уменьшение размера.

0 голосов
/ 23 января 2010

Помимо формата вам нужно установить DPI, настройки уровня сжатия и т. Д. Проверьте функцию сохранения на наличие перегрузок, которые будут принимать этот тип ввода. См. эту документацию .

...