24位RGB图像,但没有蓝色通道。我该如何访问?

时间:2019-09-25 11:58:51

标签: c# image-processing rgb

我需要从文件中提取彩色图像。我将其存储在字节数组中,并且确实提取了它,但是它具有2通道,并且我不知道如何访问或获取第三个通道。我看到了原始图像,它应该是彩色图像。图片为1024x720。每个像素3个字节。

我尝试使用[1024,720,3]数组,但是它比文件大,因此无法像这样存储三个通道。

                byte[] image_array = File.ReadAllBytes(ofd.FileName);
                int start = image_array.Length - (1024 * 720 * 2);
                int o = start;

                Bitmap bmp = new Bitmap(1024, 720);
                BitmapData bmd = bmp.LockBits(new Rectangle(0, 0, 1024,
                    720), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

                unsafe
                {
                    byte* scan0 = (byte*)bmd.Scan0.ToPointer();
                    for (int i = 0; i < 720; i++)
                    {
                        for (int j = 0; j < 1024; j++)
                        {
                            byte* tmp = scan0 + i * bmd.Stride + j * 3;

                            tmp[0] = image_array[o++];
                            tmp[1] = image_array[o++];
                            tmp[2] = 0;
                        }
                    }
                }
                bmp.UnlockBits(bmd);
                pictureBox1.Image = bmp;

我遍历文件的存储图像的那部分,结果是可见的图像,非常绿色,因为蓝色通道设置为0,因为我不知道该怎么获得。< / p>

0 个答案:

没有答案