Методы изменения размера изображений на C# с примерами

Чтобы изменить размер изображения в C#, вы можете использовать различные методы. Вот некоторые часто используемые подходы:

  1. Использование пространства имен System.Drawing:

    using System.Drawing;
    public Image ResizeImage(Image image, int newWidth, int newHeight)
    {
       Bitmap bitmap = new Bitmap(newWidth, newHeight);
       using (Graphics graphics = Graphics.FromImage(bitmap))
       {
           graphics.DrawImage(image, 0, 0, newWidth, newHeight);
       }
       return bitmap;
    }
  2. Использование сторонних библиотек.
    Существует несколько популярных сторонних библиотек, которые упрощают изменение размера изображений в C#. Некоторые широко используемые библиотеки включают:

    • ImageResizer: предоставляет полный набор методов изменения размера изображений.
    • SixLabors.ImageSharp: мощная кроссплатформенная библиотека для манипулирования изображениями.

    Эти библиотеки предлагают более расширенные функции и гибкость по сравнению со встроенными вариантами.

  3. Использование WPF (Windows Presentation Foundation):
    Если вы работаете с приложением WPF, вы можете использовать пространство имен System.Windows.Media.Imagingдля изменения размера изображений. Вот пример:

    using System.Windows.Media.Imaging;
    public BitmapSource ResizeImage(BitmapSource image, int newWidth, int newHeight)
    {
       var encoder = new JpegBitmapEncoder();
       encoder.Frames.Add(BitmapFrame.Create(image));
       encoder.QualityLevel = 100;
       var bitmap = new WriteableBitmap(image);
       bitmap.Resize(newWidth, newHeight, WriteableBitmapExtensions.Interpolation.Bilinear);
       bitmap.Freeze();
       var resizedImage = new WriteableBitmap(bitmap);
       encoder.Frames.Clear();
       encoder.Frames.Add(BitmapFrame.Create(resizedImage));
       using (var stream = new MemoryStream())
       {
           encoder.Save(stream);
           stream.Seek(0, SeekOrigin.Begin);
           var result = new BitmapImage();
           result.BeginInit();
           result.CacheOption = BitmapCacheOption.OnLoad;
           result.StreamSource = stream;
           result.EndInit();
           result.Freeze();
           return result;
       }
    }

Это всего лишь несколько примеров. Существуют и другие методы, доступные в зависимости от ваших конкретных требований и библиотек, с которыми вы решите работать.