Федеральное агентство по образованию РФ
Санкт-Петербургский государственный электротехнический
университет "ЛЭТИ" им. В. И. Ульянова (Ленина)
Кафедра телевидения и видеотехники
Отчёт по лабораторной работе №4:
"Чтение заголовка TIFF - файла"
Выполнил: Евстигнеев Е.
Осадчук С.
Группа 0105
Преподаватель: Мончак А.М.
Санкт-Петербург
2011
1. Неформальная постановка задачи:
Создать программу отвечающую заданым учсловиям
2. Формальная постановка задачи:
Создать программу, читающую описательную часть TIFF-файла изображения
(из каталога O;/IMAGES), имя которого берется из командной строки запуска.
3. Текст программы :
program lab4; {программа читающая tag составляющую TIFF файла}
uses crt, GraphABC;
const zig : array [0..3] of byte=(73,73,42,20);
var
zag : array [0..3] of byte;
size : word;
f : file of real;
imagename1,ch : string;
i,namet : integer;
adr,kolvo,datat,adr2,d : longint;
begin
clrscr;
if paramcount <> 0 then imagename1:=paramstr(1) {Проверяем командную строку}
{на наличие записей}
else
begin
writeln('Vvedite imya TIFF faila: ');{Иначе вводим имя файла вручную}
readln(imagename1);
end;
if imagename1 = '' then
begin
writeln('Chto-to pohlo ne tak...'); {Если ниего не ввели}
ch:=readkey;
halt;
end
else
begin
assign (f,imagename1); {Открываем файл для чтения}
size:=1; {Размер записи 1байт}
reset(f,size);
blockread(f,zag,sizeof(zag)); {Тут долен быть заголовок}
end;
if (zig[0] <> zag[0]) and (zig[1] <> zag[1]) and (zig[2] <> zag[2]) and (zig[3] <> zag[3]) then
begin
writeln('Eto ne TIFF file'); {Если заголовок не ТИФовский}
ch:=readkey;
halt;
end;
seek(f,4); {К адресу области данных}
blockread(f,adr,4);
seek(f,adr);
blockread(f,kolvo,2);
adr:=adr+2;
ch:='Spisok vseh tag"ov: ';
for i:=1 to kolvo do
begin
seek(f,adr); {Переместить к началу следующего tag'a}
blockread(f,namet,2);
writeln('Tag № ',namet);{Вывод имени(номера) Tag'a}
adr:=adr+8; {Переместить к области данных}
case namet of
256: {Содержит число точек в строке изображения}
begin
seek(f,adr);
blockread(f,datat,4);
writeln('(256)Chislo tochek po gorizontali ',datat);
end;
257: {Содержит количество строк в изображении}
begin
seek(f,adr);
blockread(f,datat,4);
writeln('(257)Chislo tochek po vertikali ',datat);
end;
258:
begin
seek(f,adr);
blockread(f,datat,4);
writeln('(258)Glubina cveta ',datat); {Число битов на пиксел(глубина цвета)}
end;
273:
begin
seek(f,adr-4);
blockread(f,datat,4);
seek(f,adr);
if datat = 1 then
begin
blockread(f,adr2,4);
writeln('Polosa odna po adresu #',datat);{Количество информации этого тага}
end { дальше адрес таблицы строк или самого изображения}
else
begin
blockread(f,adr2,4);
writeln('Polos ',datat,' s adresami #');
for i:=1 to datat do
begin
seek(f,adr2);
blockread(f,d,4);
writeln('adres #',i, '----',d);
end;
end;
end;
278:
begin
seek(f,adr);
blockread(f,datat,4);
writeln('(278)Strok v polose ',datat); {Количество строк в одной полосе}
end;
end;
adr:=adr+4;
{ch:=ch+'tag # '+namet+' '}
end;
seek(f,adr);
blockread(f,adr,4);
writeln('Vsego ',kolvo,' Tag"ov');
if adr <> 0 then writeln('Est escho oblast dannih');
ch:=readkey;
end.
4. Инструкция пользователя. Запустить файл (*.exe), первого файла, следуйте инструкциям на экране, затем повторите действия со вторым.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.