Delphi: как узнать размер изображения PNG?

Чтобы узнать размер изображения в формате PNG, можно использовать вот такую процедуру:

procedure GetPNGSize(const sFile: string; var wWidth, wHeight: word);
type TPNGSig = array[0..7] of byte;
const
ValidSig: TPNGSig = (137,80,78,71,13,10,26,10);
var
Sig: TPNGSig;
f: tFileStream;
x: integer;
begin
FillChar(Sig, SizeOf(Sig), #0);
f := TFileStream.Create(sFile, fmOpenRead);
try
f.read(Sig[0], SizeOf(Sig));
for x := Low(Sig) to High(Sig) do
if Sig[x] <> ValidSig[x] then
exit;
f.Seek(18, 0);
wWidth := ReadMWord(f);
f.Seek(22, 0);
wHeight := ReadMWord(f);
finally
f.Free;
end;
end;

Используем вот так:
...
var w,h:word;
begin
GetPNGSize('c:image.png',w,h);
ShowMessage('Размер изображения: '+floattostr(w)+' на '+floattostr(h)+' пикселей');
end;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *