При помощи данной процедуры на Delphi можно узнать высоту и ширину картинки, сохраненной в формате JPEG:
function ReadMWord (f: TFileStream): Word; type TMotorolaWord = record case byte of 0: (Value: Word); 1: (Byte1, Byte2: Byte); end; var MW:TMotorolaWord; begin f.Read(MW.Byte2, SizeOf(Byte)); f.Read(MW.Byte1, SizeOf(Byte)); Result := MW.Value; end; procedure GetJPGSize (const sFile:String; var wWidth, wHeight: Word); const ValidSig: array[0..1] of byte = ($FF, $D8); Parameterless = [$01, $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7]; var Sig: array[0..1] of byte; f: TFileStream; x: Integer; Seg: Byte; Dummy: array[0..15] of Byte; Len: Word; ReadLen: LongInt; begin FillChar(Sig, SizeOf(Sig), #0); f := TFileStream.Create(sFile, fmOpenRead); try ReadLen := f.Read(Sig[0], SizeOf(Sig)); for x := Low(Sig) to High(Sig) do if (Sig[x] <> ValidSig[x]) then ReadLen := 0; if (ReadLen > 0) then begin ReadLen := f.Read(Seg, 1); while (Seg = $FF) and (ReadLen > 0) do begin ReadLen := f.Read(Seg, 1); if (Seg <> $FF) then begin if (Seg = $C0) or (Seg = $C1) then begin ReadLen := f.Read(Dummy[0], 3); wHeight := ReadMWord(f); wWidth := ReadMWord(f); end else begin if not (Seg in Parameterless) then begin Len := ReadMWord(f); f.Seek(Len - 2, 1); f.Read(Seg, 1); end else Seg := $FF; end; end; end; end; finally f.Free; end; end;