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

Comment redimensionner efficacement les images en C #?

Susan Sarandon
Libérer: 2025-01-31 00:56:08
original
311 Les gens l'ont consulté

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

// objImage 是原始 Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));
Copier après la connexion

<细> Autres détails:

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;
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal