кто-то мог объяснить мне, почему в 24-разрядном rgb растровом файле я должен добавить дополнение, какой размер зависит от ширины изображения? Зачем?
Я подразумеваю, что должен добавить этот код к своей программе (в C):
if( read % 4 != 0 ) {
read = 4 - (read%4);
printf( "Padding: %d bytes\n", read );
fread( pixel, read, 1, inFile );
}
Поскольку 24 бита - это нечетное количество байтов (3) и по разным причинам все строки изображения должны начинаться с адреса, кратного 4 байтам.
От формата зависит, есть ли заполнение в конце каждой строки.
На самом деле нет особых причин для этого для изображений каналов 3 x 8 бит, поскольку ввод-вывод в любом случае ориентирован на байты. Для изображений с пикселями, упакованными менее чем в один байт (например, 1 бит / пиксель), полезно использовать заполнение, чтобы каждая строка начиналась со смещения в байтах.