Heim >Backend-Entwicklung >C++ >Wie kann ich die Größe von Bildern proportional ändern und dabei die maximale Breite und Höhe beibehalten?
Proportionale Größenänderung von Bildern: Beibehaltung der maximalen Breite und Höhe
In Szenarien, in denen Bilder Abmessungen aufweisen, die die angegebenen Maximalgrenzen überschreiten, ist es wichtig, sie zu skalieren proportional nach unten. Bei dieser Anpassung muss jedoch sichergestellt werden, dass sowohl Breite als auch Höhe innerhalb dieser Einschränkungen bleiben. Darüber hinaus sollte der Prozess das ursprüngliche Seitenverhältnis einhalten.
Um dies zu erreichen, wird eine maßgeschneiderte Lösung vorgestellt:
public static void Test() { using (var image = Image.FromFile(@"c:\logo.png")) using (var newImage = ScaleImage(image, 300, 400)) { newImage.Save(@"c:\test.png", ImageFormat.Png); } } public static Image ScaleImage(Image image, int maxWidth, int maxHeight) { var ratioX = (double)maxWidth / image.Width; var ratioY = (double)maxHeight / image.Height; var ratio = Math.Min(ratioX, ratioY); var newWidth = (int)(image.Width * ratio); var newHeight = (int)(image.Height * ratio); var newImage = new Bitmap(newWidth, newHeight); using (var graphics = Graphics.FromImage(newImage)) graphics.DrawImage(image, 0, 0, newWidth, newHeight); return newImage; }
Die ScaleImage-Methode berechnet sorgfältig den geeigneten Skalierungsfaktor, um das proportional zu reduzieren Bild ohne Beeinträchtigung des Seitenverhältnisses. Dies wird erreicht, indem die angegebene maximale Breite und Höhe mit den ursprünglichen Bildabmessungen verglichen wird. Sobald das richtige Verhältnis ermittelt ist, wird es auf beide Dimensionen angewendet, um die skalierten Werte abzuleiten. Anschließend wird eine neue Bitmap mit den skalierten Abmessungen erstellt und das Originalbild proportional unter Verwendung des Grafikkontexts darauf gezeichnet. Das resultierende Bild behält die maximalen Einschränkungen bei und behält gleichzeitig seine ursprünglichen Proportionen bei.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe von Bildern proportional ändern und dabei die maximale Breite und Höhe beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!