2013-05-01 2 views
0

Я использовал этот код для изменения размера загруженного изображения, но когда я сравнил сгенерированное изображение с другими изображениями на других сайтах, я обнаружил, что он имеет большой размер!Я изменил размер загруженных изображений, но у меня все еще есть большой размер

System.Drawing.Image img = System.Drawing.Image.FromFile(MapPath(filePath)); 

      int mediumWidth = 350; 
      int mediumHeight = mediumWidth * img.Height/img.Width; 
      System.Drawing.Bitmap bmw = new System.Drawing.Bitmap(img, mediumWidth, mediumHeight);//resize image 
      bmw.Save(MapPath("~/image/thumb/") + fileName); 
      bmw.Dispose(); 

генерируемое изображение имеет 200 Кб, но и в других веб-сайтах он есть 20 кб .. Есть проблема с моим кодом?

+3

вы храните растровый объект как Bitmap-файл (.bmp). Это незашифрованный и большой. (Даже если вы повторно используете оригинальное имя файла, и оно было png или sth: это НЕ делает ваш новый растровый образ png). См. Класс JpegBitmapEncoder для примеров. – dognose

+0

Возможный дубликат [C# - размер изображения увеличивается после создания меньшего разрешения одного и того же изображения] (http://stackoverflow.com/questions/8550159/c-sharp-image-size-increases-after-creating-a-smaller -Разрешение-оф-же-I) – mbeckish

ответ

2

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

Попробуйте использовать the Save overload which allows specifying encoding вместо:

bmw.Save(MapPath("~/image/thumb/") + fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
Смежные вопросы