Heim >Backend-Entwicklung >C++ >Wie konvertiere ich Bilder in C# in Graustufen?

Wie konvertiere ich Bilder in C# in Graustufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-17 12:57:13304Durchsuche

How to Convert Images to Grayscale in C#?

Detaillierte Erläuterung der C#-Bild-Graustufenkonvertierung

Das Konvertieren von Bildern in das Graustufenformat ist eine häufige Bildverarbeitungsaufgabe. In diesem Artikel wird untersucht, wie Sie die System.Drawing.Imaging.PixelFormat-Enumeration verwenden, um die Graustufenkonvertierung in C# zu implementieren.

16-Bit-Pixel-Graustufenformat

Wenn Sie ein Graustufenbild mit 16-Bit-Pixeln benötigen, können Sie den folgenden Konstruktor verwenden:

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

Bild-Graustufenkonvertierung

Um ein vorhandenes Bild (c) in ein Graustufenbild (d) umzuwandeln, können Sie den folgenden Code verwenden:

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

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

(Der spezifische Graustufenkonvertierungscode im Schleifenkörper wird hier weggelassen, da der Originaltext keinen vollständigen Inhalt des Schleifenkörpers bereitstellt)

Schnellere Graustufenkonvertierungsmethode

Das Folgende ist eine effizientere Methode zur Bild-Graustufenkonvertierung:

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

Diese Methode verwendet ColorMatrix, um eine Graustufenkonvertierung durchzuführen und so die Leistung zu verbessern.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich Bilder in C# in Graustufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn