Maison >développement back-end >C++ >Comment redimensionner efficacement les images en C #?

Comment redimensionner efficacement les images en C #?

Susan Sarandon
Susan Sarandonoriginal
2025-01-31 00:56:08291parcourir

Méthode d'efficacité élevée C # Taille d'image

Question:

System.Drawing.Image La classe fournit des propriétés de taille, de largeur et de hauteur GET (). Mais comment ajuster la taille de l'objet image lors de l'exécution en C #?

Solution:

Utilisez la charge lourde avec la taille () pour créer une nouvelle image.

Cependant, les fonctions suivantes peuvent être utilisées pour obtenir une taille de réglage de meilleure qualité:

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

Autres détails:

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

    // 使用 Graphics 类绘制调整大小的图像
    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>

Empêchez les pixels transparents à l'extérieur de la limite de la limite, ce qui affecte l'image qui est ajustée.

La maintenance DPI n'a rien à voir avec la taille de la physique, et la qualité peut être améliorée lors de la réduction de la taille de l'image ou de l'impression.
  • Divers composites, interpolation, lissage et Contrôle de jeu PixeloffsetMode pour ajuster la qualité de rendu des grandes et petites images. wrapMode.SetWrapMode(WrapMode.TileFlipXY)
  • Cette fonction ne maintient pas le rapport de traitement et ne laisse pas les développeurs à décider de lui-même.
  • destImage.SetResolution

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