Maison >développement back-end >C++ >Comment réaliser un redimensionnement d'images de haute qualité en C #?

Comment réaliser un redimensionnement d'images de haute qualité en C #?

Susan Sarandon
Susan Sarandonoriginal
2025-01-31 01:11:08398parcourir

How to Achieve High-Quality Image Resizing in C#?

Optimisation de la redimensionnement de l'image en C #

Redimensionner efficacement les images dans les applications C # exige une manipulation minutieuse des propriétés de l'image. Tout en accédant aux dimensions via Size, Width et Height est possible, ce n'est pas l'approche la plus efficace pour le redimensionnement de la qualité.

Techniques de redimensionnement supérieures

Pour la mise à l'échelle de l'image haute fidélité, la fonction C # suivante fournit une solution robuste:

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

Facteurs critiques pour la redimensionnement de la qualité

  • WrapMode.TileFlipXY: élimine les artefacts de bord ("fantômes") en reflétant l'image.
  • SetResolution: maintient le DPI d'origine, garantissant une netteté cohérente d'image, quels que soient les changements de taille.
  • Paramètres de composition: Contrôler avec précision le mélange et le rendu des pixels pour des résultats supérieurs.
  • InterpolationMode.HighQualityBicubic: utilise un algorithme de haute qualité pour les transitions de mise à l'échelle plus lisses.
  • Smoothing and Pixel Offset: Minimiser les bords déchiquetés (aliasing) et améliorer la clarté de la ligne.

Conclusion

Cette approche raffinée garantit le redimensionnement d'images de haute qualité en C #. La préservation du rapport d'aspect peut être ajoutée en tant que fonctionnalité distincte si nécessaire.

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