Thema: Delphi Bilder aus Stream Laden

Einzelnen Beitrag anzeigen

Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#1

Bilder aus Stream Laden

  Alt 10. Jan 2010, 16:43
huhu,

ich arbeite mit der graphic32.
Ich habe die Bilder in einer Datenbank gespeichert.
Jetzt möchte ich die Bilder aus der Datenbank in einer TImage32 anzeigen lassen.Die klappt mit BMPs alles auch ganz ordentlich.Nur JPGs/JPEGs machen probleme(mit dennen hab ich es bis her nur gestetet ).Ich speichere mir in der Datenbank in einem BLOB-Feld die Datei als Stream.Wenn ich jetzt das Bild aus der DB laden möchte bekomme ich die Fehlermeldung "Bitmap ist ungültig".
Darauf hin habe ich mir eine kleine TestProc geschrieben, in der man das Problem gut nachvollziehen kann.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var FS : TFileStream;
    FName : String;
begin
  FName := 'C:\Bild1.JPG';

  // Geht
  //============
  Image321.Bitmap.LoadFromFile(FName);

  // Geht nicht
  //============
  FS := TFileStream.Create(FName,fmOpenRead);
  Image321.Bitmap.LoadFromStream(FS);
  freeandnil(Fs);

end;
Zur erklärung: in FName steht der Dateipfad des Bildes. Dieser pfad ist absolut ok.
Wenn ich das Bild per " Image321.Bitmap.LoadFromFile(FName);"lade, wird das Bild richtig angezeigt.
Wenn ich das Bild per "Image321.Bitmap.LoadFromStream(FS);" lade kommt die Fehlermeldung.

Man könnte jetzt den Umweg machen, und den Stream erst in einer Temp-Datei zu speichern und dann diese wieder zu laden aber das würde ich nur sehr ungern machen, da
1. wieder Schreibrechte benötigt und zum
2. Das Speichern und laden unnötige zeit benötigt
3. möchte ich das laden der Bilder in mehrere Threads ausladen.

mfg Jens
  Mit Zitat antworten Zitat