Как получить размер GIF-картинки?

Previous  Top  Next

    
 

 

Code:

type

  TImageSize = record

    Width: Integer;

    Height: Integer;

  end;

 

function ReadGIFSize(Stream: TStream): TImageSize;

type

  TGifHeader = record

    Signature: array [0..5] of Char;

    Width, Height: Word;

  end;

var

  Header: TGifHeader;

begin

  FillChar(Header, SizeOf(TGifHeader), #0);

  Result.Width := -1;

  Result.Height := -1;

  with Stream do

  begin

    Seek(0, soFromBeginning);

    ReadBuffer(Header, SizeOf(TGifHeader));

  end;

  if (AnsiUpperCase(Header.Signature) = 'GIF89A') or

    (AnsiUpperCase(Header.Signature) = 'GIF87A') then

  begin

    Result.Width  := Header.Width;

    Result.Height := Header.Height;

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

const

  FileName = 'D:\test.gif';

var

  fs: TFileStream;

  gifsize: TImageSize;

begin

  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

  try

    gifsize := ReadGIFSize(fs);

    ShowMessage(Format('Breite %d Hцhe %d', [gifsize.Width, gifsize.Height]));

  finally

    fs.Free;

  end;

end;

 

©Drkb::03802

Взято с сайта: http://www.swissdelphicenter.ch