c # Die Größe des Bilds wird auf eine andere Größe geändert, wobei das Seitenverhältnis beibehalten wird

Ich versuche, die Größe eines Bildes zu ändern, während das Seitenverhältnis vom Originalbild beibehalten wird, damit das neue Bild nicht gequetscht aussieht.

z.B:

Konvertieren Sie ein 150 * 100-Bild in ein 150 * 150-Bild.
Die zusätzlichen 50 Pixel der Höhe müssen mit einer weißen Hintergrundfarbe aufgefüllt werden.

Dies ist der aktuelle Code, den ich verwende.

Es eignet sich gut zum Ändern der Größe, aber durch Ändern des Seitenverhältnisses des Originalbilds wird das neue Bild gestaucht.

private void resizeImage(string path, string originalFilename, 
                         int width, int height)
    {
        Image image = Image.FromFile(path + originalFilename);

        System.Drawing.Image thumbnail = new Bitmap(width, height);
        System.Drawing.Graphics graphic = 
                     System.Drawing.Graphics.FromImage(thumbnail);

        graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphic.SmoothingMode = SmoothingMode.HighQuality;
        graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
        graphic.CompositingQuality = CompositingQuality.HighQuality;

        graphic.DrawImage(image, 0, 0, width, height);

        System.Drawing.Imaging.ImageCodecInfo[] info =
                         ImageCodecInfo.GetImageEncoders();
        EncoderParameters encoderParameters;
        encoderParameters = new EncoderParameters(1);
        encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,
                         100L);            
        thumbnail.Save(path + width + "." + originalFilename, info[1], 
                         encoderParameters);
    }

EDIT: Ich möchte das Bild auffüllen anstatt beschneiden

Antworten auf die Frage(13)

Ihre Antwort auf die Frage