Maison > développement back-end > C++ > Comment convertir des images en niveaux de gris en C# ?

Comment convertir des images en niveaux de gris en C# ?

Mary-Kate Olsen
Libérer: 2025-01-17 12:57:13
original
303 Les gens l'ont consulté

How to Convert Images to Grayscale in C#?

Explication détaillée de la conversion des niveaux de gris d'image C#

La conversion d'images au format niveaux de gris est une tâche courante de traitement d'image. Cet article explique comment utiliser l'énumération System.Drawing.Imaging.PixelFormat pour implémenter la conversion en niveaux de gris en C#.

Format en niveaux de gris de pixels 16 bits

Si vous avez besoin d'une image en niveaux de gris avec des pixels de 16 bits, vous pouvez utiliser le constructeur suivant :

<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
Copier après la connexion

Conversion des niveaux de gris de l'image

Pour convertir une image existante (c) en une image en niveaux de gris (d), vous pouvez utiliser le code suivant :

<code class="language-csharp">Bitmap d;
int x, y;

// 循环遍历图像像素并将其颜色重置为灰度
for (x = 0; x < ...; x++) {
    for (y = 0; y < ...; y++) {
        // 灰度转换逻辑...
    }
}</code>
Copier après la connexion

(Le code de conversion spécifique en niveaux de gris dans le corps de la boucle est omis ici car le texte original ne fournit pas le contenu complet du corps de la boucle)

Méthode de conversion des niveaux de gris plus rapide

Ce qui suit est une méthode plus efficace de conversion des niveaux de gris d'une image :

<code class="language-csharp">public static Bitmap MakeGrayscale3(Bitmap original)
{
    Bitmap newBitmap = new Bitmap(original.Width, original.Height);

    using (Graphics g = Graphics.FromImage(newBitmap))
    {
        // 创建灰度ColorMatrix
        ColorMatrix colorMatrix = new ColorMatrix(
            new float[][]
            {
                new float[] {.3f, .3f, .3f, 0, 0},
                new float[] {.59f, .59f, .59f, 0, 0},
                new float[] {.11f, .11f, .11f, 0, 0},
                new float[] {0, 0, 0, 1, 0},
                new float[] {0, 0, 0, 0, 1}
            });

        // 使用灰度ColorMatrix绘制原始图像
        g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
                    0, 0, original.Width, original.Height, GraphicsUnit.Pixel,
                    new ImageAttributes { ColorMatrix = colorMatrix });
    }

    return newBitmap;
}</code>
Copier après la connexion

Cette méthode utilise ColorMatrix pour effectuer une conversion en niveaux de gris, améliorant ainsi les performances.

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!

source:php.cn
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