Как учитывать отступы при чтении растрового изображения - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь прочитать значения пикселей RGB из растрового изображения с C, я дошел до того, что выгрузил значения пикселей в стандартный вывод, но я не до конца понимаю, почему вывод такой, какой он есть, или как его изменить к тому, что я хочу, чтобы это было (RGBRGBRGBRGB .. а не RGB0RGB0RGB0RGB0 ..).

Растровое изображение имеет размер 3x3, 24 бита, первая строка красного цвета, вторая - зеленого цвета, а третья - синего цвета.

Я нашел много разных уравнений для вычисления заполнения пикселей, но ни одно из них не работает с остальной частью моего кода, что наводит меня на мысль, что моя проблема вызвана чем-то, что я упустил.

Это код: (buffer_p - это копия растрового изображения в памяти, а data_start - это адрес, с которого начинаются данные пикселей, при этом заголовок пропускается)

/* read RGB values from image data */
for (int i = data_start; i < filesize; ++i) {
    printf("R: %x\n", buffer_p[i]);
    printf("G: %x\n", buffer_p[++i]);
    printf("B: %x\n\n", buffer_p[++i]);
}

Остальная часть кода просто открывает файл и копирует его в память, прежде чем устанавливать некоторые переменные для хранения полезных данных из заголовка, таких как высота и ширина и т. Д.

Я ожидал, что результат будет таким:

R: ff
G: 0
B: 0

R: ff
G: 0
B: 0

R: ff
G: 0
B: 0

R: 0
G: ff
B: 0

R: 0
G: ff
B: 0

R: 0
G: ff
B: 0

R: 0
G: 0
B: ff

R: 0
G: 0
B: ff

R: 0
G: 0
B: ff

Это было на самом деле так:

R: ff
G: 0
B: 0

R: ff
G: 0
B: 0

R: ff
G: 0
B: 0

R: 0
G: 0
B: 0

R: 0
G: ff
B: 0

R: 0
G: ff
B: 0

R: 0
G: ff
B: 0

R: 0
G: 0
B: 0

R: 0
G: 0
B: ff

R: 0
G: 0
B: ff

R: 0
G: 0
B: ff

R: 0
G: 0
B: 0

Не было ошибок при компиляции или во время выполнения.

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