我需要从文件中提取彩色图像。我将其存储在字节数组中,并且确实提取了它,但是它具有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>