首页 >后端开发 >C++ >如何在保持最大宽度和高度的同时按比例调整图像大小?

如何在保持最大宽度和高度的同时按比例调整图像大小?

DDD
DDD原创
2025-01-06 15:30:40191浏览

How to Proportionally Resize Images While Maintaining Maximum Width and Height?

按比例调整图像大小:保持最大宽度和高度

在图像尺寸超过指定最大限制的情况下,缩放它们变得至关重要按比例下降。然而,这种调整需要确保宽度和高度都保持在这些限制范围内。此外,该过程应遵循原始的宽高比。

为了实现这一点,提出了一个量身定制的解决方案:

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;
}

ScaleImage 方法精心计算适当的缩放因子,以按比例减少图像而不影响其纵横比。它通过将提供的最大宽度和高度与原始图像尺寸进行比较来实现这一点。一旦确定了正确的比率,就将其应用于两个维度以得出缩放值。然后使用缩放后的尺寸创建新的位图,并使用图形上下文按比例将原始图像绘制到其上。生成的图像保持最大约束,同时保留其原始比例。

以上是如何在保持最大宽度和高度的同时按比例调整图像大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn