Я пытаюсь прочитать значения пикселей 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
Не было ошибок при компиляции или во время выполнения.