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
Freigeben: 2025-01-17 12:47:11
Original
557 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

(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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage