Obter o tamanho de um arquivo de imagem TIF

 

Crie uma nova unit:

 

unit TifSize;

 

interface

 

uses

  Windows, Classes, SysUtils;

 

procedure GetTifSize(sFileName: string; var iWidth, iHeight: Integer);

 

implementation

 

type

  TTifHeader = Record

     Signature: WORD;

     Version: Word;

     IFD: DWORD;

  end;

 

  TIDF_Field = Record

    Tag: Word;

    FieldType: Word;

    ValCount: DWord;

    ValOffset: DWORD;

  end;

 

procedure GetTifSize(sFileName: string; var iWidth, iHeight: Integer);

var

  TifFile: TFileStream;

  Header: tTifHeader;

  DirEntries: Word;

  Field: TIDF_Field;

  Cnt: Integer;

begin

  iWidth := -1;

  iHeight := -1;

  TifFile := TFileStream.Create (sFileName, fmOpenRead);

  Try

    TifFile.Read(Header, 8);

    TifFile.Position := Header.IFD;

    TifFile.Read(DirEntries, 2);

    for Cnt := 1 to DirEntries do

    begin

      TifFile.Read(Field, 12);

      case Field.Tag of

        $0100: iWidth  := Field.ValOffset;

        $0101: iHeight := Field.ValOffset;

      end;

      if (iWidth <> -1) and (iHeight <> -1) then

        Break;

    end;

  finally

    FreeAndNil ( TifFile );

  end;

end;

end.