Алгоритм RLE в формате BMP работает следующим образом: прорисовка производится по горизонтали, начиная с левого нижнего пикселя и заканчивая правым верхним. codeby.net При этом дозволено прерывание прорисовки горизонтали и перемещение прорисовки на другую позицию. codeby.net
Формирование изображения осуществляется двухбайтовыми командами: codeby.net
- [01..FF][байт] — прорисовать пиксели со значением из второго байта столько раз, сколько указано в первом байте. codeby.net
- {00-host} {00-host} — переместить курсор в начало следующей горизонтали. codeby.net
- {00-host} {01-host} — закончить прорисовку. codeby.net
- {00-host} {02-host} [XX][YY] — переместить курсор вправо и вверх на значения 0xXX по горизонтали и 0xYY по вертикали, влево и вниз сдвинуть нельзя. codeby.net
- {00-host} [кол-во=3..FF][байты] — прорисовать следующие [кол-во=3..FF] пикселя один раз со значениями из [байты], при этом если количество прорисованных пикселей нечётно, то дописывается дополнительный байт, значение которого неважно. codeby.net
Алгоритм RLE лучше всего работает на изображениях с ограниченным количеством разных цветов и относительно большими областями каждого цвета. github.com