Entwickler-Ecke

Datenbanken - JPEG, BMP... in Blob-Felder speichern und laden


mambo - Fr 21.11.03 10:16
Titel: JPEG, BMP... in Blob-Felder speichern und laden
Hallo !
Ich habe folgendes Problem:
ich weiß zwar, wie man JPG oder BMP-Bilder in Blob Felder schreibt und liest (ist hier ja auch oft beschrieben), aber wie kann ich ein Bild unabhängig vom Format in ein DB-Blob-Feld speichern?

Ich wähle ein Bild aus (mit dem ImageDialog) und speichere es in die DB:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  bs: TBlobStream;
begin

  Query.Edit;

  with Query do
  begin
   bs := TBlobStream(CreateBlobStream(TBlobField(FieldByName('LOGO')),bmWrite));
  end;

  LOGO.Picture.Graphic.SaveToStream(bs);

  bs.Free;
end;


dabei ist ja egal, welches format die grafik hat (JPG,BMP o.a.)

Will ich jedoch das Bild aus der DB laden, muß ich ja wissen, was für ein Format es hat, oder ? ich mach das so:

Quelltext
1:
2:
3:
4:
5:
6:
          bs := TBlobStream(Query.CreateBlobStream(Query.Fieldbyname('MyBlob'), bmRead));
          jp := TJPegImage.Create;
          jp.LoadFromStream(bs);
          Image.Picture.Assign(jp);
          bs.Free;
          jp.Free;

hier kommt mir immer ein Fehler JPG-Fehler #41

wie kann ich aber unabhängig vom Bildformat das Bild dem Image zuweisen ? Ich weiß ja nicht, wann im Feld ein JPG, wann ein BMP ist.

Für eure hilfe wäre ich sehr dankbar
heinz


MSCH - Fr 21.11.03 10:54

Nimm ein Zusätzliches Feld, in dem du den Dateinamen und/oder Typ reinschreibst.

Übrigens kann man das noch einfacher Machen:
Query.Fieldname.loadfromFile() bzw
Query.Fieldname.saveToFile().

grez
msch


hansa - Fr 21.11.03 11:40

Ich würde mal versuchen, die Unit JPEG in die uses-Liste aufzunehmen. Das dürfte genügen.


DaWi2000 - Di 18.05.04 19:24

Zitat:
Nimm ein Zusätzliches Feld, in dem du den Dateinamen und/oder Typ reinschreibst.

Übrigens kann man das noch einfacher Machen:
Query.Fieldname.loadfromFile() bzw
Query.Fieldname.saveToFile().

grez
msch

:arrow:
Aber das finde ich leider auch nicht... bei einer TQuery-Komponente gibt es doch gar kein loadfromfile() oder etwa doch ???

Klärt mich doch bitte auf... :?: :?: :?:

Gruß

DaWi2000