Ich versuche, die Größe eines Bildes zu ändern, während das Seitenverhältnis zum 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 gequetscht.
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);
}
BEARBEITEN: Ich möchte, dass das Bild aufgefüllt statt beschnitten wird