Палитра в 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.

Объяснение кода листинга программы

  1. Объявлены следующие переменные:
    • CT: массив размером 256x3 (0..255, 0..3), элементы типа byte;
    • f: файл типа file of byte;
    • i: целочисленная переменная;
    • b, g, r, a: переменные типа byte.
  2. Открывается файл 'pic.bmp' для чтения с помощью функции assignfile.
  3. Файл позиционируется с помощью функции seek на 54 байта от начала файла.
  4. Выводятся заголовки для вывода значений цветовых каналов (B, G, R).
  5. Запускается цикл от 0 до 255 (включительно) для чтения каждого пикселя из файла.
  6. Для каждого пикселя выполняется операция сдвига на 2 бита для каждого из цветовых каналов (B, G, R).
  7. Результат каждого цветового канала записывается в соответствующую ячейку массива CT.
  8. Выводятся значения каждого цветового канала в формате B: G: R.
  9. Закрывается файл 'pic.bmp' с помощью функции close.

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы