Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild über TImage aus der Datenbank holen? (https://www.delphipraxis.net/101030-bild-ueber-timage-aus-der-datenbank-holen.html)

Jack23 7. Okt 2007 13:14

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Bild über TImage aus der Datenbank holen?
 
Hallo

ich habe ein TImage und möchte drüber aus der Datenbank ein Bild anzeigen lassen.

Das Bild ist in der Datenbank so gespeichert: C:\Image.jpg

Wie bekomme ich das hin?

DeddyH 7. Okt 2007 13:26

Re: Bild über TImage aus der Datenbank holen?
 
Hier mal ein Beispiel aus einem Testprojekt von mir (deshalb die blöden Bezeichner):
Delphi-Quellcode:
procedure TFrmMain.LoadPic;
var Stream: TStream;
    aJPG: TJPEGImage;
begin
  ZQuery1.Close;
  with ZQuery1.SQL do
    begin
      Clear;
      Add('SELECT Grafik FROM Bild');
      Add('WHERE ID = :id');
     end;
  ZQuery1.ParamByName('id').AsInteger := PKnoten(TreeView1.Selected.Data)^.KnotenId;
  ZQuery1.Open;
  if (ZQuery1.RecordCount > 0) and not ZQuery1.FieldByName('Grafik').IsNull and ZQuery1.FieldByName('Grafik').IsBlob then
    begin
      //Hier ist der interessante Teil
      aJPG := TJPEGImage.Create;
      Stream := ZQuery1.CreateBlobStream(ZQuery1.FieldByName('Grafik'),bmRead);
      try
        aJPG.LoadFromStream(Stream);
        Image1.Picture.Graphic := aJPG;
        FitImage;
      finally
        Stream.Free;
        aJPG.Free;
      end;
    end
  else
    begin
      Image1.Picture.Assign(nil);
      Label1.Visible := true;
    end;
end;
[edit] Oder ist nur der Pfad in der DB abgelegt? [/edit]

Jack23 7. Okt 2007 13:33

Re: Bild über TImage aus der Datenbank holen?
 
Es ist nur der Pfad in der DB abgelegt.

SirThornberry 7. Okt 2007 13:36

Re: Bild über TImage aus der Datenbank holen?
 
dann
Delphi-Quellcode:
Image.picture.LoadFromFile(DateinameAusDatenbank);

DeddyH 7. Okt 2007 13:38

Re: Bild über TImage aus der Datenbank holen?
 
Das ist doch viel einfacher.
Delphi-Quellcode:
//Auslesen des Pfades
query.SQL.Text := 'SELECT Pfad FROM Tabelle WHERE Bedingung';
query.Open;
Pfad := Query.FieldByName('Pfad').AsString;
//Versuchen, die Grafik ins Image zu laden
try
  aJPG := TJPEGImage.Create;
  try
    aJPG.LoadFromFile(Pfad);
    Image1.Picture.Graphic := aJPG;
  except
    ShowMessage('Fehler beim Laden der Grafik');
  end;
finally
  aJPG.Free;
end;
Getippt und nicht getestet.

SirThornberry 7. Okt 2007 13:40

Re: Bild über TImage aus der Datenbank holen?
 
das erzeugen des JPEG-Image ist überflüssig wenn die unit jpeg eingebunden ist. Dadurch kann TPciture mit LoadFromFile das JPEG laden.

DeddyH 7. Okt 2007 13:42

Re: Bild über TImage aus der Datenbank holen?
 
War mir auch gerade aufgefallen, aber Du warst schneller, bevor ich editieren konnte ;)

Jack23 7. Okt 2007 13:59

Re: Bild über TImage aus der Datenbank holen?
 
Ich danke euch schon mal. Nun habe ich aber ein Problem.

So sieht meine jetzige Abfrage aus:
Delphi-Quellcode:
procedure TForm9.test(Sender: TObject);
begin
 ADOQuery1.Active:=false;
 ADOQuery1.Sql.Clear;
 ADOQuery1.Sql.Add('SELECT * FROM abc WHERE a like "%" ORDER BY test asc');
 ADOQuery1.Active:=true;
end;
Nach dieser Abfrage werden die Daten in einem neuem Fenster, in einem DBGrid angezeigt.
neben diesem DBgrid befindet sich das TImage. Wie bekomme ich die Daten von der oben genannten Abfrage mit deinem Code in das TImage?

mkinzler 7. Okt 2007 14:02

Re: Bild über TImage aus der Datenbank holen?
 
Betreibe doch einfach einen Wissenstranfer und ersetzte Query durch ADOQuery1

Jack23 7. Okt 2007 14:09

Re: Bild über TImage aus der Datenbank holen?
 
Also meinst du das so?

Delphi-Quellcode:
//Auslesen des Pfades
 Pfad :=ADOQuery1.FieldByName('Pfad').AsString;
//Versuchen, die Grafik ins Image zu laden
try
  aJPG := TJPEGImage.Create;
  try
    aJPG.LoadFromFile(Pfad);
    Image1.Picture.Graphic := aJPG;
  except
    ShowMessage('Fehler beim Laden der Grafik');
  end;
finally
  aJPG.Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.
Seite 1 von 6  1 23     Letzte »    

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