Палитра в bmp-файле - PascalABC.NET
Формулировка задачи:
Как изменить палитру в bmp-файле(8 бит)
Решение задачи: «Палитра в bmp-файле»
textual
Листинг программы
var CT: array[0..255, 0..3] of byte; f: file of byte; i: integer; b, g, r, a: byte; begin assignfile(f, 'pic.bmp'); reset(f); seek(f, 54); writeln('B:':5, 'G:':5, 'R:':5); for i := 0 to 255 do begin read(f, b, g, r, a); CT[i, 0] := b shr 2; CT[i, 1] := g shr 2; CT[i, 2] := r shr 2; writeln(CT[i, 0]:5, CT[i, 1]:5, CT[i, 2]:5) end; close(f); end.
Объяснение кода листинга программы
- Объявлены следующие переменные:
- CT: массив размером 256x3 (0..255, 0..3), элементы типа byte;
- f: файл типа file of byte;
- i: целочисленная переменная;
- b, g, r, a: переменные типа byte.
- Открывается файл 'pic.bmp' для чтения с помощью функции assignfile.
- Файл позиционируется с помощью функции seek на 54 байта от начала файла.
- Выводятся заголовки для вывода значений цветовых каналов (B, G, R).
- Запускается цикл от 0 до 255 (включительно) для чтения каждого пикселя из файла.
- Для каждого пикселя выполняется операция сдвига на 2 бита для каждого из цветовых каналов (B, G, R).
- Результат каждого цветового канала записывается в соответствующую ячейку массива CT.
- Выводятся значения каждого цветового канала в формате B: G: R.
- Закрывается файл 'pic.bmp' с помощью функции close.