hallo zusammen...
ich versuche gerade bild dateien in einer
mysql db abzulegen und wieder aus der
mysql zu laden und in einem TImage anzeigen zu lassen...
das speichern in der
db funktioniert im großen und ganzen... das habe ich wie folgt umgesetzt:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
memStream : TMemoryStream;
begin
If (Length(Trim(Edit5.Text)) = 0)
Or (Length(Trim(Edit6.Text)) = 0)
Then
Begin
MessageDlg('
File Information missing!', mtError, [mbOK], 0);
Exit;
End;
memStream := TMemoryStream.Create;
memStream.LoadFromFile(Edit6.Text);
memStream.Position := 0;
Try
With (InsertData)
Do
Begin
Active := False;
SQL.Clear;
SQL.Add('
Insert Into picture '
+'
(filename, filedata, filesize) '
+'
Values(:filename, :filedata, :filesize)');
ParamByName('
filename').AsString := Edit5.Text;
ParamByName('
filedata').LoadFromStream(memStream, TBlobType(0));
ParamByName('
filesize').AsInteger := memstream.Size;
ExecSQL;
End;
Except
On E:EMySQLDatabaseError
Do
Begin
MessageDlg('
Could not insert Data' + #13 + E.
Message, mtError, [mbOK], 0);
End;
End;
memStream.Free;
end;
für das laden aus der
mysql habe ich hier im forum die folgende funktion gefunden:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
Stream : TStream;
JPEG : TJpegImage;
BITMAP : TBitmap;
begin
Try
With (imagedata)
Do
Begin
Active := False;
SQL.Clear;
SQL.Add('
Select * From picture '
+'
Where filename = "'+ GetData.FieldByName('
filename').AsString +'
" ');
Active := True;
End;
Except
On E:EMySQLDatabaseError
Do
Begin
MessageDlg('
Could not select image Data' + #13 + E.
Message, mtError, [mbOK], 0);
Exit;
End;
End;
Stream := TStream.Create;
Stream := imagedata.CreateBlobStream(imagedata.FieldByName('
filedata'), bmRead);
Stream.Position := 0;
JPEG := TJpegImage.Create;
BITMAP := TBitmap.Create;
JPEG.LoadFromStream(Stream);
BITMAP.Assign(JPEG);
image.Picture.Bitmap.Assign(JPEG);
Stream.Free;
JPEG.Free;
BITMAP.Free;
end;
bei jpeg dateien funktioniert es wunderbar, aber sobald ich z.b. eine bmp datei haben erhalte ich den fehler "jpeg fehler #53"
ich denke mal das hängt mit dem datei typ zusammen unter dem das bild in die
db geladen wurde, also das die obere funktion nur für jpeg dateien verwendbar ist...
gibt es auch eine möglichkeit die daten zu laden und in einem TImage anzuzeigen ohne das ich an dateiformate gebunden bin?