2009-09-04 3 views
3

Как я могу сжать и файл изображения (* BMP, * JPEG) в C#, я должен отображать некоторые изображения в качестве фона, на мой контроль, им с помощью следующего кода масштабировать мое изображениеСжатие изображения в .NET

Bitmap orgBitmap = new Bitmap(_filePath); 
Bitmap regBitmap = new Bitmap(reqSize.Width, reqSize.Height); 

using (Graphics gr = Graphics.FromImage(reqBitmap)) 
{ 
    gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    gr.DrawImage(bmp, new RectangleF(0, 0, reqSize.Width, reqSize.Height)); 
    } 

Это дает мне необходимое растровое изображение. Моя проблема в том, что если оригинальное растровое изображение является тяжелым (2 МБ), тогда, когда я загружаю 50 изображений, он загружает всю мою память, я хочу сжимать изображение, насколько могу, не теряя столько качества. Как я могу сделать то же самое в .СЕТЬ ?

ответ

3

Вам обязательно нужны большие изображения, которые будут присутствовать во время исполнения? Не могли бы вы изменить размер (или сохранить их чуть ниже) с помощью программы редактирования изображений (Photoshop, Paintshop Pro и т. Д.) Заранее? Кажется, что каждый раз, когда вы запускаете работу, мало что нужно делать, особенно в том случае, если инструменты редактирования, скорее всего, сделают лучшую работу.

Конечно, это не сработает, если это что-то вроде того, как пользователь выбирает произвольные изображения со своего жесткого диска.

Еще один момент: вы удаляете растровые изображения, когда закончите с ними? Вы не показываете это в своем коде ... если вы не используете оригинальные (большие) растровые изображения, тогда вы будете во власти финализаторов, чтобы освободить неуправляемые ресурсы. Финализаторы также задерживают сбор мусора этих объектов.

+0

Спасибо за ваш ответ, Пользователь проблема может выбрать любое изображение с жесткого диска. да, я удаляю исходное изображение после использования, я пропустил этот код в своем коде – Firoz

0

Удачи в сжатии JPEG. :) Уже сжато. Что касается ваших BMP, сделайте их JPEG.

1

Возможно, я не понимаю, но почему бы не преобразовать растровые изображения в jpg, прежде чем импортировать их в свой проект в качестве фона управления?

Смежные вопросы