首頁 > 後端開發 > C++ > 如何在保持最大寬度和高度的同時按比例調整影像大小?

如何在保持最大寬度和高度的同時按比例調整影像大小?

DDD
發布: 2025-01-06 15:30:40
原創
203 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板