Heim >Backend-Entwicklung >C++ >Wie konvertiert man ein Bild in C# in 16-Bit-Graustufen?

Wie konvertiert man ein Bild in C# in 16-Bit-Graustufen?

DDD
DDDOriginal
2025-01-17 12:47:11558Durchsuche

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

Bild in 16-Bit-Graustufen in C# konvertieren

Das Konvertieren eines Bildes in 16-Bit-pro-Pixel-Graustufen unterscheidet sich vom einfachen Festlegen der einzelnen R-, G- und B-Komponenten auf Luminanzwerte. So können Sie dies in C# erreichen:

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

In Graustufen konvertieren

So konvertieren Sie ein vorhandenes Bild in Graustufen:

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

(Ein Teil des Codes wird hier weggelassen, da der Originalcode unvollständig ist und Fehler aufweist)

Schnellere Optionen

Für eine schnellere Graustufenkonvertierung können Sie ColorMatrix verwenden:

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

Das obige ist der detaillierte Inhalt vonWie konvertiert man ein Bild in C# in 16-Bit-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