Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   JPEG in TImage laden (https://www.delphipraxis.net/155983-jpeg-timage-laden.html)

ilse2005 15. Nov 2010 19:32

Datenbank: Acess • Version: 2010 • Zugriff über: ADO

JPEG in TImage laden
 
Hallo habe schon viel rumgesucht aber leider keine Lösung gefunden. Ich habe in meiner Datenbank JPEG Bilder als Blob gespeichert. Das schreiben über Delphi funktioniert auch schon. Nun will ich aber die Bilder auch anzeigen lassen und habe folgendes versucht:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
   blob : TMemoryStream;
   BlobField: TBlobField;
   jpeg : TJPEGImage;
   bmp : TBitmap;
begin
    blob := TMemoryStream.Create();
    jpeg := TJPEGImage.Create;
//    bmp := TBitmap.Create;
   with ADOTable1 do
   begin
     blob.Clear;

     try
     begin
       BlobField := FieldByName('Bild') as TBlobField  ;
       blobfield.SaveToStream(blob);
       jpeg.LoadFromStream(blob);
//     bmp.Assign(jpeg);
       Image1.Picture.Assign(jpeg);
     end;
     finally
       blob.free;
       jpeg.free
   end;

end;
Das Programm kompillert auch aber wenn ich den Button klicke kommt immer folgende Fehlermeldung: 'JPEG-Fehler#42'

EDIT: Besser so? Hab das Problem leider immer noch...

mkinzler 15. Nov 2010 19:35

AW: JPEG in TImage laden
 
Hast du Jpeg in die Uses aufgenommen?

BTW: Bitte verwende für Delphi-Quellcode Delphi-Tags

Luckie 15. Nov 2010 19:36

AW: JPEG in TImage laden
 
Kein Ressourcenschutzblock, keine Fehlerbehandlung mit Try-Except, kein Freigeben der belegten Ressourcen,... Mach erst mal die Fehler raus. Dann können wir weiter sehen.

ilse2005 15. Nov 2010 20:09

AW: JPEG in TImage laden
 
habs editiert. Weiß aber immernoch nicht wo das Problem liegt.
jpeg unit ist auch eingebunden.

Bummi 15. Nov 2010 20:09

AW: JPEG in TImage laden
 
Delphi-Quellcode:
var
  s:TMemoryStream;
  i:TJPEGImage;
begin
  i:=TJPEGImage.Create;
  s:=TMemoryStream.Create;
  try
  TBlobField(dBild).SaveToStream(s);
  if s.Position > 0 then
      begin
        s.Position := 0;
        try
        i.LoadFromStream (s);
        Image2.Picture.Assign(i) ;
        except
        end;
      end;
  finally
  s.Free;
  i.Free
  end;
end;

ilse2005 16. Nov 2010 17:51

AW: JPEG in TImage laden
 
Danke!
Das hat jetzt erstmal geklappt. Jetzt hab ich aber ein anderes Problem:
Ich will das Bild auf einem DBCtrlGrid anzeigen. Dort werden gleichzeitig 3 Datensätze angezeigt
Wie bekomm ich es hin, dass beim Start bei allen das richige Bild angezeigt wird?
Bisher hab ich die Bilder in DataSource DataSetChange Event geladen. Aber dann stimmt erst alles wenn ich alle Datensätze durchgeklickt habe.

mkinzler 16. Nov 2010 17:53

AW: JPEG in TImage laden
 
Verwende
Delphi-Quellcode:
TDBImage
Btw.: Eigentlich gilt ja: "Neue Frage, neuer Thread"

ilse2005 16. Nov 2010 18:35

AW: JPEG in TImage laden
 
das ist ja das Problem. Wie ich gelesen habe kann TdbImage keine jpeg Dateien laden. Hab das auch versucht aber scheint wirklich nicht zu funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 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