Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menukar Imej kepada Skala Kelabu dalam C#?

Bagaimana untuk Menukar Imej kepada Skala Kelabu dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-17 12:57:13
asal
303 orang telah melayarinya

How to Convert Images to Grayscale in C#?

Penjelasan terperinci tentang penukaran skala kelabu imej C#

Menukar imej kepada format skala kelabu ialah tugas pemprosesan imej yang biasa. Artikel ini akan meneroka cara menggunakan System.Drawing.Imaging.PixelFormat penghitungan untuk melaksanakan penukaran skala kelabu dalam C#.

Format skala kelabu piksel 16-bit

Jika anda memerlukan imej skala kelabu dengan piksel 16-bit, anda boleh menggunakan pembina berikut:

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

Penukaran skala kelabu imej

Untuk menukar imej sedia ada (c) kepada imej skala kelabu (d) anda boleh menggunakan kod berikut:

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

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

(Kod penukaran skala kelabu khusus dalam badan gelung ditinggalkan di sini kerana teks asal tidak menyediakan kandungan isi gelung yang lengkap)

Kaedah penukaran skala kelabu yang lebih pantas

Berikut ialah kaedah penukaran skala kelabu imej yang lebih cekap:

<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>
Salin selepas log masuk

Kaedah ini menggunakan ColorMatrix untuk melaksanakan penukaran skala kelabu, sekali gus meningkatkan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Imej kepada Skala Kelabu dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan