Создание программы, читающей описательную часть TIFF-файла изображения

Страницы работы

Содержание работы

Федеральное агентство по образованию РФ

 


Санкт-Петербургский государственный электротехнический
университет "ЛЭТИ" им. В. И. Ульянова (Ленина)

 


Кафедра телевидения и видеотехники

Отчёт по лабораторной работе №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), первого файла, следуйте инструкциям на экране, затем повторите действия со вторым.

Похожие материалы

Информация о работе