При помощи данной процедуры на Delphi можно узнать высоту и ширину картинки, сохраненной в формате GIF:
procedure GetGIFSize(const sGIFFile:String; var wWidth, wHeight: Word);
type
TGIFHeader = record
Sig: array[0..5] of Char; ScreenWidth, ScreenHeight: Word; Flags, Background, Aspect: Byte;
end;
TGIFImageBlock = record Left, Top, Width, Height: Word; Flags: Byte;
end;
var f: File; Header: TGifHeader; ImageBlock: TGifImageBlock; nResult: Integer; x: Integer; c: Char; DimensionsFound: Boolean;
begin
wWidth := 0; wHeight := 0;
if (sGifFile = '') then
exit;
{$I-}
FileMode := 0; { только чтение } AssignFile(f, sGifFile); reset(f, 1);
if (IOResult 0) then
exit; BlockRead(f, Header, SizeOf(TGifHeader), nResult);
if (nResult SizeOf(TGifHeader)) or (IOResult 0) or (StrLComp('GIF', Header.Sig, 3) 0) then
begin close(f); exit;
end;
if (Header.Flags and $80) > 0 then
begin
x := 3 * (1 SHL ((Header.Flags and 7) + 1)); Seek(f, x);
if (IOResult 0) then
begin close(f); exit;
end;
end; DimensionsFound := False; FillChar(ImageBlock, SizeOf(TGIFImageBlock), #0); BlockRead(f, c, 1, nResult);
while (not EOF(f)) and (not DimensionsFound) do
begin
case c of ',':
begin
BlockRead(f, ImageBlock, SizeOf(TGIFImageBlock), nResult);
if (nResult SizeOf(TGIFImageBlock)) then
begin close(f); exit;
end;
wWidth := ImageBlock.Width; wHeight := ImageBlock.Height; DimensionsFound:=True;
end;
end; BlockRead(f, c, 1, nResult);
end;
close(f);
{$I+}
end;
Ссылки в тему:
Как узнать размеры JPG-файла?
Как узнать размеры PNG-файла?
Читайте Новости казани день за днем