Redimensionner les images proportionnellement : conserver la largeur et la hauteur maximales
Dans les scénarios où les images présentent des dimensions dépassant les limites maximales spécifiées, il devient crucial de les mettre à l'échelle baisse proportionnellement. Cependant, cet ajustement nécessite de s'assurer que la largeur et la hauteur restent dans ces contraintes. De plus, le processus doit respecter le rapport hauteur/largeur d'origine.
Pour ce faire, une solution sur mesure est présentée :
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; }
La méthode ScaleImage calcule méticuleusement le facteur d'échelle approprié pour réduire proportionnellement le image sans compromettre son rapport hauteur/largeur. Pour ce faire, il compare la largeur et la hauteur maximales fournies avec les dimensions de l'image d'origine. Une fois le rapport correct déterminé, il est appliqué aux deux dimensions pour en dériver les valeurs mises à l’échelle. Un nouveau bitmap est ensuite créé avec les dimensions mises à l'échelle et l'image originale y est dessinée proportionnellement à l'aide du contexte graphique. L'image résultante conserve les contraintes maximales tout en préservant ses proportions d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!