Ridimensionare immagini in C#

Ridimensionare immagini in C#

Per effettuare un ridimensionamento delle immagini in C#, non abbiamo bisogno di librerie esterne (anche se sono sicuro che ce ne stanno di ottime).

Ci basta usare il namespace System.Drawing.

Se siete dentro ad un progetto console, dovete aggiungere il reference.

Detto ciò, ecco un esempio:

using System.Drawing;
using System.Drawing.Drawing2D;

namespace TestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            string imageFile = "C:\img.jpg";
            string outputFile = "C:\img_scale.jpg";
            double scaleFactor = 0.5;
            resize(imageFile, outputFile, scaleFactor);
        }

        public static void resize(string imageFile, string outputFile, double scaleFactor)
        {
            using (var srcImage = Image.FromFile(imageFile))
            {
                var newWidth = (int)(srcImage.Width * scaleFactor);
                var newHeight = (int)(srcImage.Height * scaleFactor);
                using (var newImage = new Bitmap(newWidth, newHeight))
                using (var graphics = Graphics.FromImage(newImage))
                {
                    graphics.SmoothingMode = SmoothingMode.AntiAlias;
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
                    newImage.Save(outputFile);
                }
            }
        }
    }
}

Diciamo che non c'è molto da commentare; io non ho esplorato a fondo tutte le API, perchè mi andava bene questo per il mio scopo.

Probabilmente si può fare di meglio; prendetelo come spunto.

Enjoy!