AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream schnell durchsuchen

Ein Thema von Hador · begonnen am 26. Nov 2006 · letzter Beitrag vom 27. Nov 2006
 
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#1

Stream schnell durchsuchen

  Alt 26. Nov 2006, 23:43
Irgendwie klappt heute nicht allzuviel allzu gut
3 Threads an einem Abend gab's bei mir noch nie.

Folgendes:
Ich versuche das Thumb aus einem RAW-Photo zu extrahieren.
Die Bilddaten beginnen dabei beim Offset $2600.
Um das Ende des JPEG-Thumbs zu finden, durchsuche ich folgend dann den Stream nach "$FF$D9".
Klappt auch soweit ganz gut.
Allerdings dauert das ganze bei meiner Implementation ewig lange.
Es muss doch irgendeine schnellere Möglichkeit geben oder mein Code sollte sich zumindest optimieren lassen.
Hat irgendeiner eine Idee?

Hier der Quellcode:
Delphi-Quellcode:
procedure TImgViewerForm.LoadCR2Thumb(const AFileName: String);
var
  FS: TFileStream;
  MS: TMemoryStream;
  B: Byte;
  JPG: TJpegImage;
  c: Integer;
begin
  FS := TFileStream.Create(AFileName, fmOpenRead);
  FS.Seek($2600, soFromBeginning);

  MS := TMemoryStream.Create;
  while True do
  begin
    FS.Read(B, 1);
    if B = $FF then
    begin
      FS.Read(B, 1);
      Inc(c);
      if B = $D9 then
      begin
        c := FS.Position - $2600;
        Break;
      end;
    end;
    if (FS.Position = FS.Size) then
      Exit;
  end;
  FS.Seek($2600, soFromBeginning); // Ab hier geht dann alles ganz schnell. Nur die vorangehende Schleife ist super lahm.
  MS.CopyFrom(FS, c);
  MS.Seek(0, soBeginning);
  JPG := TJPEGImage.Create;
  JPG.LoadFromStream(MS);

  Img.Picture.Assign(JPG);
  JPG.Free;
  MS.Free;
  FS.Free;
end;
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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 by Thomas Breitkreuz