Maison >développement back-end >C++ >Comment redimensionner les images en C # pour une haute qualité?

Comment redimensionner les images en C # pour une haute qualité?

DDD
DDDoriginal
2025-01-31 01:16:08318parcourir

How to Resize Images in C# for High Quality?

C # Méthode de zoom d'image de qualité élevée

Il n'est pas facile d'ajuster la taille de l'image lors de l'exécution en C #. Bien que ait des propriétés ,

et

, le réglage de ces attributs n'ajuste pas la taille de l'image. System.Drawing.Image Size Pour ajuster la taille de l'image, vous devez utiliser la nouvelle taille pour créer un nouvel objet Width et dessiner l'image d'origine vers l'objet. Vous pouvez utiliser le code suivant pour implémenter: Height

Cependant, cette méthode entraînera une baisse de la qualité de l'image. Pour obtenir un zoom de haute qualité, la classe Bitmap est nécessaire. Comment faire fonctionner l'exemple ci-dessous:

<code class="language-csharp">Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));</code>

Cette fonction fournit un zoom de haute qualité de la manière suivante: Graphics

<code class="language-csharp">/// <summary>
/// 将图像调整为指定宽度和高度。
/// </summary>
/// <param name="image">要调整大小的图像。</param>
/// <param name="width">要调整到的宽度。</param>
/// <param name="height">要调整到的高度。</param>
/// <returns>调整大小后的图像。</returns>
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>
Définissez pour

pour éviter de fortes ombres autour de la limite de l'image.

    Définissez l'image cible
  • pour garder DPI. WrapMode TileFlipXY Utilisez des paramètres de haute qualité
  • ,
  • , Resolution et
  • .
  • Compositing Interpolation Les autres considérations incluent le rapport longitudinal de l'image (réservé aux lecteurs comme exercices), et le piège où l'image zoome sur l'image lors de l'enregistrement de l'image. Smoothing

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn