Thread 7?
Aber das praktische Beispiel.
Delphi-Quellcode:
uses
jpeg;
...
var
jpeg: TJPEGImage;
begin
jpeg := TJPEGImage.Create;
try
jpeg.LoadFromFile('Dateiname');
Caption := Format('%d, %d', [jpeg.Width, jpeg.Height]);
finally
jpeg.Free;
end;
end;
Bevor die Frage aufkommt. Ja dabei wird das Bild in den Speicher geladen. Das hängt leider an dem JPEGImage. Allerdings wird es noch
nicht dekodiert weswegen lediglich der Speicherverbrauch um die Größe des Bildes steigt. Dadurch benötigt das Ganze auch noch nicht wirklich viel Zeit.
Das JPEG wird erst dekodiert sobald die Bilddaten benötigt werden. Also es gezeichnet wird oder auf ein Bitmap zugewiesen wird.
Falls du etwas brauchst was die Daten nicht den Speicher lädt dann solltest du evtl mal die
libjepg anschauen. Dafür hatte ich vor ein paar Wochen einen Header geschreiben (aber noch nicht veröffentlicht). Der Programmieraufwand ist aber wesentlich größer, da es sich dabei um eine sehr umständliche
DLL handelt. Allerdings direkt in der Datei rum zu lesen ist bei einem JPEG keine gute Idee. Dafür ist das Format zu komplex. Man müsste es wenn dann schon von vorn durchinterpretieren um den Header zu finden. Denn ein jpeg kann auch ein anderes jpeg enthalten (thumbnail).