Maison >développement back-end >C++ >Comment redimensionner les images en C # tout en maintenant une qualité optimale?

Comment redimensionner les images en C # tout en maintenant une qualité optimale?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-31 01:06:10240parcourir

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

Redimensionnement d'images de haute qualité en C #

Les images de redimensionnement en C # impliquent souvent l'utilisation des propriétés System.Drawing.Image de la classe Size, Width et Height. Cependant, une approche de redimensionnement simple peut compromettre la qualité d'image. Pour des résultats optimaux, utilisez une méthode plus sophistiquée comme celle ci-dessous:

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

Cette méthode exploite plusieurs fonctionnalités clés pour assurer le redimensionnement de haute qualité:

  • wrapMode.SetWrapMode(WrapMode.TileFlipXY): élimine les artefacts (fantômes) sur les bords de l'image en reflétant l'image pendant le processus de mise à l'échelle.
  • destImage.SetResolution(...): Préserve le DPI de l'image (points par pouce), crucial pour maintenir la qualité lors de la réduction de la taille ou de la préparation de l'impression.
  • Paramètres graphiques de haute qualité: CompositingQuality, InterpolationMode, SmoothingMode, et PixelOffsetMode sont tous définis sur HighQuality ou HighQualityBicubic pour le rendu supérieur.

Considérations importantes:

Cette fonction ne gére pas intrinsèquement le rapport d'aspect; Vous devrez gérer vous-même cet aspect pour éviter la distorsion. De plus, n'oubliez pas que la sauvegarde de l'image redimensionnée (par exemple, en utilisant destImage.Save(...)) peut également avoir un impact sur la qualité. Consulter les ressources externes pour les meilleures pratiques dans les formats d'économie d'image et les niveaux de compression.

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