Home > Backend Development > C++ > How to Convert Images to Grayscale in C#?

How to Convert Images to Grayscale in C#?

Mary-Kate Olsen
Release: 2025-01-17 12:57:13
Original
303 people have browsed it

How to Convert Images to Grayscale in C#?

Detailed explanation of C# image grayscale conversion

Converting images to grayscale format is a common image processing task. This article will explore how to use the System.Drawing.Imaging.PixelFormat enumeration to implement grayscale conversion in C#.

16-bit pixel grayscale format

If you need a grayscale image with 16-bit pixels, you can use the following constructor:

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

Image grayscale conversion

To convert an existing image (c) to a grayscale image (d) you can use the following code:

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

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

(The specific grayscale conversion code in the loop body is omitted here because the original text does not provide complete loop body content)

Faster grayscale conversion method

The following is a more efficient method of image grayscale conversion:

<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>
Copy after login

This method uses ColorMatrix to perform grayscale conversion, thus improving performance.

The above is the detailed content of How to Convert Images to Grayscale in C#?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template