ホームページ >バックエンド開発 >C++ >最適な品質を維持しながら、C#で画像をサイズ変更する方法は?

最適な品質を維持しながら、C#で画像をサイズ変更する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-31 01:06:10250ブラウズ

How to Resize Images in C# While Maintaining Optimal Quality?

C#

でサイズ変更された高品質の画像 C#の画像のサイズ変更には、多くの場合、クラスの

、および

プロパティの使用が含まれます。 ただし、単純なサイズ変更アプローチは、画質を損なう可能性があります。 最適な結果を得るには、以下のようなより洗練された方法を採用してください。 System.Drawing.Image Sizeこの方法は、高品質のサイズ変更を確実にするためにいくつかの重要な機能を活用しています:Width Height

<code class="language-csharp">public static Bitmap ResizeImage(Image image, int width, int height)
{
    var destRect = new Rectangle(0, 0, width, height);
    var destImage = new Bitmap(width, height);

    destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

    using (var graphics = Graphics.FromImage(destImage))
    {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;
        graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphics.SmoothingMode = SmoothingMode.HighQuality;
        graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

        using (var wrapMode = new ImageAttributes())
        {
            wrapMode.SetWrapMode(WrapMode.TileFlipXY);
            graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
        }
    }

    return destImage;
}</code>

スケーリングプロセス中に画像をミラーリングすることにより、画像エッジでアーティファクト(ゴースト)を排除します。
  • wrapMode.SetWrapMode(WrapMode.TileFlipXY)画像のdpi(インチあたりのドット)を保持します。サイズを縮小したり印刷の準備をするときに品質を維持するために重要です。
  • 高品質のグラフィックス設定:destImage.SetResolution(...)
  • 、および
  • は、優れたレンダリングの場合はすべてまたはに設定されています。 CompositingQuality InterpolationModeSmoothingMode重要な考慮事項:PixelOffsetMode HighQuality HighQualityBicubicこの関数は本質的にアスペクト比を管理しません。歪みを防ぐために、その側面を自分で処理する必要があります。 さらに、サイズ変更された画像を保存すること(
  • を使用するなど)を保存すると、品質にも影響を与える可能性があることを忘れないでください。画像保存形式と圧縮レベルのベストプラクティスについては、外部リソースを参照してください。

以上が最適な品質を維持しながら、C#で画像をサイズ変更する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。