Мне нужно извлечь цветное изображение из файла.У меня есть это в байтовом массиве, и я действительно извлек его, но у него есть 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, потому что я не знаю, как его получить.