Как прочитать 8-битный файл изображения? - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я работаю над проектом чтения и хранения изображений. И я хотел спросить, как я могу прочитать 8-битный файл изображения? Если это поможет, у меня есть рабочий код, который может читать 24-битный файл изображения. Код считывает цветовые коды изображения и добавляет их в массив. Я хочу сделать что-то подобное с 8-битным файлом изображения.

var name = Path.GetFileNameWithoutExtension(path);
Bitmap image = new Bitmap(path);        

image.Save(name + "_24bit.bmp", ImageFormat.Bmp);

using (FileStream file = new FileStream(name + "_24bit.bmp", FileMode.Open, FileAccess.Read))
{
    byte[] b = new byte[file.Length];
    file.Read(b, 0, (int)file.Length);
    int width = BitConverter.ToInt32(b, 0x00012);
    int height = BitConverter.ToInt32(b, 0x0016);
    int points = (width * height);


    //Taškus verčiame į spalvų kodus
    int[] bs = new int[points];
    int j = 54;
    for (int i = 0; i < bs.Length; i++)
    {
        bs[i] = (((b[j + 2] << 8) + b[j + 1]) << 8) + b[j];
        j += 3;
    }
    //
}

1 Ответ

0 голосов
/ 02 апреля 2020

В 8-битном файле изображения каждый пиксель представлен только одним байтом, а не 3 на 24 бита.

Вам необходимо определить, является ли его 8-битный цвет или 8-битная шкала серого.

8-битный цвет упакован как RRRGGGBB, например, 3 бита для красного, 3 для зеленого и 2 для синего. Изображение в оттенках серого показывает только яркость пикселя.

Фактически, можно представить 24-битное цветное изображение из 3 каналов 8-битной шкалы серого, один из которых назначен каждому цвету (красный, зеленый, синий).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...