Entwickler-Ecke

Datenbanken - JPG aus MSDE mit ADO auslesen und weiterverarbeiten


Fanatics - So 11.08.02 00:28
Titel: JPG aus MSDE mit ADO auslesen und weiterverarbeiten
ich möchte ein jpg-bild, das in einer sql-server2000-datenbank gespeichert(datentyp image) ist über ADO auslesen und weiterverarbeiten (speichern, anzeigen etc...)

dazu habe ich folgenden code geschrieben, der aber nicht funktioniert...WARUM ????

ich bekomme immer nur eine 1MB-Datei, die aber kein JPG-File darstellt.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject);
var
  jpegimage :TJPEGImage;
  stream : TMemoryStream;
begin
try
  jpegimage := TJPEGImage.Create;
  stream := TMemoryStream.Create;
  TBlobField(ADODataSet1.FieldByName('Bild')).SaveToStream(stream);
  jpegimage.LoadFromStream(stream);
  jpegimage.SaveToFile('E:\Test.jpg');
except
  on e:exception do begin
    ShowMessage(e.Message);
  end;
end;
end;


gruß

Fred


Simon Joker - Fr 16.08.02 12:28
Titel: Streamposition vergessen
Hi Fanatics

probiere es mal so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
try
  Stream:=TMemoryStream.Create;
  JP:=TJpegImage.Create;
  TaBilderP_Data.SaveToStream(Stream);
  Stream.Position:=0;
  JP.LoadFromStream(Stream);
  Image.Picture.Bitmap.Assign(JP);
finally
  Stream.Free;
  JP.Free;
end;


Cu Simon[/code]


Fanatics - Fr 16.08.02 21:09

danke, aber ich habe das problem bereits gefunden....
mit deinem code geht's übrigens auch nicht, da vor dem eigentlichen bild noch andere informationen stehen....man muss den zeiger des streams erst auf den anfang (FFD8) des bildes positionieren und dann gehts ...
trotzdem danke...

gruß

Fanatics


Simon Joker - Fr 16.08.02 21:56

Ja, hatte ich vergessen zu erwähnen. Mein Feld war ein Blob-Feld. Da sind keine Dateiinformationen vornweg. Das Problem war aber genau das gleiche.