Как сохранить растровое изображение после настройки интерполяции с графическим классом - PullRequest
5 голосов
/ 26 мая 2011

Этот код изменяет размер изображения и сохраняет его на диск.

using (var medBitmap = new Bitmap(fullSizeImage, newImageW, newImageH))
{
     medBitmap.Save(HttpContext.Current.Server.MapPath("~/Media/Items/Images/" + itemId + ".jpg"),
                    ImageFormat.Jpeg);
}

Но если я хочу использовать графический класс для установки интерполяции, как мне сохранить его? Графический класс имеет метод save, но он не принимает никаких параметров. Как мне сохранить его на диск, как растровое изображение? Вот измененный фрагмент кода:

using (var medBitmap = new Bitmap(fullSizeImage, newImageW, newImageH))
{
     var g = Graphics.FromImage(medBitmap);
     g.InterpolationMode = InterpolationMode.HighQualityBicubic;
     //What do I do now?
     medBitmap.Save(HttpContext.Current.Server.MapPath("~/Media/Items/Images/" + itemId + ".jpg"),
                    ImageFormat.Jpeg);
}

Мне просто нужно установить интерполяцию и затем сохранить ее на диск.

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

Вызовите DrawImage для объекта Graphics, чтобы обновить растровое изображение:

using (var medBitmap = new Bitmap(fullSizeImage, newImageW, newImageH))
{
  using (var g = Graphics.FromImage(medBitmap))
  {
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.DrawImage(medBitmap, 0, 0);
  }
  medBitmap.Save(HttpContext.Current.Server.MapPath("~/Media/Items/Images/" + itemId + ".jpg"), ImageFormat.Jpeg);
}
1 голос
/ 26 мая 2011

Создайте новое растровое изображение нужного размера и установите режим интерполяции. Затем используйте Graphics.DrawImage, чтобы нарисовать полноразмерное изображение в новом растровом изображении.

...