Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild aus DB lesen und an TImage via Stream übergeben (https://www.delphipraxis.net/42851-bild-aus-db-lesen-und-timage-via-stream-uebergeben.html)

Berserker 24. Mär 2005 17:13

Datenbank: MySQL • Version: 4.1 • Zugriff über: Corelab MyDAC

Bild aus DB lesen und an TImage via Stream übergeben
 
Hallo Delphi-Gemeinde.

Ich versuch gerade aus einer Datenbank (MySQL) aus einem BlobFeld ein Bild zu lesen. Dies funktioniert wunderbar. Ich kann das Bild speichern und im TImage via LoadFromFile wieder laden.

Ich würde aber gerne das Bild in einen Stream speichern und dann im TImage mit LoadFromStream wieder laden.

Ich habe es schon mit Assign probiert. Dies funktioniert auch, jedoch will er kein JPEG, GIF etc laden. Es kommt immer die Fehlermeldung "Bitmap ungülitg"

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var blobBild: TBlobfield;
begin
 blobBild := MyTable1.FieldByName('dateiinhalt') As TBlobField;
 if(blobBild.BlobSize>0) then
  Image1.Picture.Assign( blobBild );
end;

Fall jemand Lösungsvorschläge hat, wäre ich sehr dankbar.

MfG, Ronny

joachimd 24. Mär 2005 22:23

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
Zitat:

Zitat von Berserker
Ich würde aber gerne das Bild in einen Stream speichern und dann im TImage mit LoadFromStream wieder laden.

Ich habe es schon mit Assign probiert. Dies funktioniert auch, jedoch will er kein JPEG, GIF etc laden. Es kommt immer die Fehlermeldung "Bitmap ungülitg"

Du musst ein jpg erstellen und Deinen Stream dahinein laden.
Delphi-Quellcode:
var
 jpg:TJPEGImage;
 m:TMemoryStream;
begin
  jpg:=TJPEGImage.Create;
  m:=TMemoryStream.Create;
  try
    TBlobField(AdsTable1.FieldByName('BILD')).SaveToStream(m);
    m.Position:=0;
    jpg.LoadFromStream(m);
    Image1.Picture.Assign(jpg);
  finally
    FreeAndNil(m);
    FreeAndNil(jpg);
  end;
end;

Schodn 13. Apr 2006 11:59

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
Delphi-Quellcode:
// Speichern
               jpg:=TJPEGImage.Create;
                m:=TMemoryStream.Create;
                try
                jpg.Assign(img_main_logo.Picture.Graphic);

                jpg.SaveToStream(m);
                m.Position := 0;
                TBlobField(aqTmp.FieldByName('pfad')).LoadFromStream(m);
                finally
                    FreeAndNil(m);
                    FreeAndNil(jpg);
                end;

// Laden
                jpg:=TJPEGImage.Create;
                m:=TMemoryStream.Create;
                try
                    TBlobField(aqTmp.FieldByName('pfad')).SaveToStream(m);
                    m.Position:=0;
                    jpg.LoadFromStream(m);
                    img_main_logo.Picture.Assign(jpg);
                finally
                    FreeAndNil(m);
                    FreeAndNil(jpg);
                end;
Da kommt aber immer der JPeg fehler

joachimd 13. Apr 2006 12:02

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
Zitat:

Zitat von Schodn
Da kommt aber immer der JPeg fehler

Wo?

Schodn 13. Apr 2006 12:03

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
nach dem Laden

bei Application.run

joachimd 13. Apr 2006 12:08

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
Zitat:

Zitat von Schodn
nach dem Laden
bei Application.run

?? Wenn Du den Fehler in o.a. Code vermutest, setze dort Haltepunkte und debugge richtig.

Schodn 13. Apr 2006 12:15

Re: Bild aus DB lesen und an TImage via Stream übergeben
 
das debuggen hilft mir auch nicht weiter

das muss irgendwie damit zusammenhängen, wie ich das Jpeg reinlade oder speichere


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz