ホームページ > バックエンド開発 > C++ > 最大の幅と高さの制限でアスペクト比を維持しながら画像のサイズを比例的に変更するにはどうすればよいですか?

最大の幅と高さの制限でアスペクト比を維持しながら画像のサイズを比例的に変更するにはどうすればよいですか?

DDD
リリース: 2025-01-06 14:10:43
オリジナル
671 人が閲覧しました

How to Proportionally Resize Images While Maintaining Aspect Ratio with Maximum Width and Height Constraints?

最大の高さと幅の制​​約を使用して画像のサイズを比例的に変更する方法

多くのシナリオでは、初期状態を維持しながら画像のサイズを変更することが必要になります。アスペクト比。これは、サイズ変更された画像の最大の高さと幅の制​​約を扱う場合に特に重要です。 C# の System.Drawing.Image は、このタスクを実行するための便利なソリューションを提供します。

問題ステートメント:

特定の幅と高さの画像が与えられた場合、サイズを変更する必要がありますアスペクト比を維持しながら、最大の高さと幅の制​​約を満たすように比例的に調整されます。サイズ変更プロセスでは、可能な最大サイズを維持しながら、幅と高さの両方が制限内になるまで寸法を繰り返し調整する必要があります。

解決策:

以下のコードは、次の方法を示しています。指定された制約内で画像を比例的にサイズ変更します:

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 メソッドは画像を受け取ります。入力として最大幅と最大高さを指定します。元のアスペクト比を維持しながら、幅も高さも指定された最大値を超えないようにする最小倍率を計算します。次に、スケールされた寸法で新しい画像が作成され、Graphics.DrawImage を使用してレンダリングされます。

このメソッドを使用するには、元の画像、最大幅、最大高さを引数として渡すだけです。このメソッドはサイズ変更された画像を返し、必要に応じて保存または使用できます。

以上が最大の幅と高さの制限でアスペクト比を維持しながら画像のサイズを比例的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート