![]() |
Auflösung einer PNG-Datei
Diese Funktion ermittelt die Auflösung einer PNG-Datei:
Delphi-Quellcode:
Vielleicht hat ja noch jemand eine bessere Alternative für den Assemblerteil, aber es funktioniert so.
uses Types;
function getPNGSize(const datei: string):TSize; var fs: TFileStream; tmp: longint; begin fs :=TFileStream.Create(datei,fmOpenRead); fs.Seek($10,soFromBeginning); fs.Read(tmp,4); asm MOV EAX,tmp BSWAP EAX MOV tmp,EAX end; result.cx :=tmp; fs.Read(tmp,4); asm MOV EAX,tmp BSWAP EAX MOV tmp,EAX end; result.cy :=tmp; fs.Free; end; Quellen: - ![]() - Trail&Error (mit Unterstützung von HxD und Irfanview) |
Re: Auflösung einer PNG-Datei
Hi,
Ich würde um den FileStream einen Resourcenschutzblock machen. Auch würde ich den Schreibstil der Prozedur an einigen Stellen anders machen und außerdem ein Standardresultat vorgeben (mit -1, -1 z.B.).
Delphi-Quellcode:
mfG
uses Types;
function GetPNGSize(const FileName: string): TSize; var Fs: TFileStream; Tmp: Longint; begin Result.Cx := -1; Result.Cy := -1; Fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try Fs.Seek($10, soFromBeginning); Fs.Read(Tmp, 4); asm MOV EAX,Tmp BSWAP EAX MOV Tmp,EAX end; Result.Cx := Tmp; Fs.Read(Tmp, 4); asm MOV EAX,Tmp BSWAP EAX MOV Tmp,EAX end; Result.Cy := Tmp; finally Fs.Free; end; end; mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz