Перетворення форматів графічних файлів
Масив для зберігання заголовку PCX файлу.
BMPheader: array [0..53] of byte;
Масив для зберігання заголовку BMP файлу.
i, result, curx, HGT: integer;
Змінна циклу, результат зчитування та запису файлів і умова виходу з циклу, вказівник на поточний елемент у масиві buf, висота зображення у рядках (або пікселах).
buf: array [0..1959] of byte;
Масив для зберігання даних одного рядка. Максимальне значення індексу масиву вибрано довільно, але так, щоб можна було перетворити тестовий файл.
b, val: byte;
Дуплети даних формату PCX запакованого за алгоритмом RLE.
size, pos1, BPL: longint;
Рахівник кількості перетворених пікселів, кількості рядків, що були перевернуті з тимчасового файлу перевернутого BMP та кількість пікселів на рядок. BPL*3 – реальний об‘єм потрібного буфера для зберігання одного рядку.
Begin
assign(PCXF, 'dollar.pcx');
reset(PCXF, 1);
assign(BMPF, 'dollar.tmp');
rewrite(BMPF, 1);
Відкриваються два файли – для зчитування з PCX та запису у TMP.
blockread(PCXF, PCXheader, 128);
Зчитується заголовок PCX в масив PCXheader розміром 128 байт:
for i:=0 to 53 do begin
BMPheader[i]:=0;
end;
Майже всі дані новоствореного заголовку BMP міститимуть нулі.
writeln('Width: ', PCXheader[9]*256+PCXheader[8]+1);