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

Bagaimana untuk Menukar Imej kepada Skala Kelabu 16-bit dalam C#?

DDD
Lepaskan: 2025-01-17 12:47:11
asal
556 orang telah melayarinya

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

Tukar imej kepada skala kelabu 16-bit dalam C#

Menukar imej kepada skala kelabu 16-bit setiap piksel adalah berbeza daripada sekadar menetapkan komponen R, G dan B individu kepada nilai kecerahan. Begini cara anda boleh mencapai ini dalam C#:

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

Tukar kepada skala kelabu

Untuk menukar imej sedia ada kepada skala kelabu:

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

(Sebahagian daripada kod ditinggalkan di sini kerana kod asal tidak lengkap dan mempunyai ralat)

Pilihan yang lebih pantas

Untuk penukaran skala kelabu yang lebih pantas, anda boleh menggunakan ColorMatrix:

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

Atas ialah kandungan terperinci Bagaimana untuk Menukar Imej kepada Skala Kelabu 16-bit 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan