Maison >développement back-end >C++ >Comment convertir une image en niveaux de gris 16 bits en C# ?

Comment convertir une image en niveaux de gris 16 bits en C# ?

DDD
DDDoriginal
2025-01-17 12:47:11558parcourir

How to Convert an Image to 16-bit Grayscale in C#?

Convertir l'image en niveaux de gris 16 bits en C#

La conversion d'une image en niveaux de gris de 16 bits par pixel est différente du simple réglage des composants R, V et B individuels sur des valeurs de luminance. Voici comment y parvenir en C# :

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

Convertir en niveaux de gris

Pour convertir une image existante en niveaux de gris :

<code class="language-csharp">Bitmap c = new Bitmap("fromFile");
Bitmap d;
for (int x = 0; x < ...</code>

(Une partie du code est omise ici car le code original est incomplet et contient des erreurs)

Options plus rapides

Pour une conversion plus rapide des niveaux de gris, vous pouvez utiliser ColorMatrix :

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

        // 使用灰度颜色矩阵将原始图像绘制到新图像上
        using (ImageAttributes attributes = new ImageAttributes())
        {
            attributes.SetColorMatrix(colorMatrix);
            g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
                        0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
        }
    }

    return newBitmap;
}</code>

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