Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.01.2013, 16:14
redfenix redfenix вне форума
Прохожий
 
Регистрация: 26.01.2013
Сообщения: 1
Репутация: 10
По умолчанию открытие tiff изображения

Нужно сделать лабораторную по открытию и выводу на экран tiff-изображения.
Вот фрагмент моей программы который пока считывает первые несколько байт из файла:
Код:
AssignFile(fl, OpenDialog1.FileName); 
      reset(fl, 1); 
      blockread(fl, bArray, 2);//читаем идентификатор 
      fZag.identifier:= inttohex(barray[1],1)+inttohex(barray[2],1); 
      blockread(fl, bArray, 2);//версия 
      fZag.Version:=bArray[1]+ bArray[2]; 
      blockread(fl, bArray, 4); //смещение 1-го каталога 
      fZag.IFDoffset:=(bArray[1])+(bArray[2]shl 8)+(bArray[3] shl 8*2)+(bArray[4]shl 8*3 ); 
      pos:= FilePos(fl)+fZag.IFDoffset; 
      blockread(fl, bArray, fZag.IFDoffset);//смещаемся к 1 каталогу 
      ShowMessage('Заголовок файла:'+Chr(13)+ 
                  Chr(13)+'Идентификатор: '+fzag.identifier+'h'+ 
                  Chr(13)+'Версия: '+IntToStr(fZag.version)+ 
                  Chr(13)+'Cмещение 1-го католога: '+inttostr(fZag.IFDoffset)) ; 
     blockread(fl, bArray,2); 
       NumDirEntries:=(barray[1])+(barray[2]shl 8);//количество тегов в каталоге 
       ShowMessage('numdirentries:'+inttostr(numdirentries)); 
       blockread(fl, bArray,2); //идентификатор тега 
       taglist.tagID:=(barray[1])+(barray[2]shl 8); 
       ShowMessage('taglist:'+inttostr(taglist.tagID)); 
       blockread(fl, bArray,2);//тип данных 
       taglist.datatype:=(barray[1])+(barray[2]shl 8); 
        ShowMessage('datatype:'+inttostr(taglist.datatype)); 
        blockread(fl, bArray,4);//количество элементов 
        taglist.datacount:=(barray[1])+(barray[2]shl 8)+(barray[3]shl 8*2) 
        +(barray[4]shl 8*3); 
        ShowMessage('datacount:'+inttostr(taglist.datacount)); 
       blockread(fl, bArray,4);//смещение данных 
        taglist.NextIFDOffset:=(barray[1])+(barray[2]shl 8)+(barray[3]shl 8*2) 
        +(barray[4]shl 8*3); 
        ShowMessage('NextIFDOffset:'+inttostr(taglist.NextIFDOffset)); 
Админ: Пользуемся тегами для оформления кода!

Сначала открываем файл,считываем идентификатор.В лабораторной он всегда равен 4949 т.е. порядок байтов "младший в младшем".
Далее читаем версию она тоже везде одинакова и равна 42.Далее считываем смещение к 1 катологу.В том изображении которое я открывал смещение=20.Смещаемся на это значение.Считываем количество тегов в каталоге.Вот тут уже начинается ошибка в моем случае количество тегов в каталоге=0,далее идентификатор тега=0 и тип данных тоже=0,количество элементов данных=2304,смещение данных=1.
Соответственно вопрос :где в моей программе ошибка из за которой считываются неверные значения?

Последний раз редактировалось Admin, 26.01.2013 в 16:27.
Ответить с цитированием
  #2  
Старый 29.01.2013, 03:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,018
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от redfenix
Нужно сделать лабораторную по открытию и выводу на экран tiff-изображения.

Берем библиотеку GraphicEx, подключаем в проект и получаем результат - грузить тифы можно через стандартный Image1.Picture.LoadFromFile.
Еще видел модуль Tiff2Bmp, но сам не пробовал, поэтому ничего толкового не скажу.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter