Ich speichere Bilder für Dokumentationszwecke in einer Datenbank.
Code: Alles auswählen
....
Add.SQL ( ... )
ParamByName('picture').LoadFromFile(OpenDialog.FileName, ftBlob);
Execute;
....
Code: Alles auswählen
SQL ....
BlobStream := TMemoryStream.Create;
TBlobField(FieldByName('picture')).SaveToStream(BlobStream);
BlobStream.Position := 0;
Image1.Picture.LoadFromStream(BlobStream);
BlobStream.Free;
In die Datenbank speichern und auslesen funktioniert fehlerfrei. Wenn ich allerdings die angezeigten Bilder wieder auf die Festplatte des Benutzers speichern möchte, brauche ich dazu die korrekte Dateierweiterung. Diese will ich aber auf keinen Fall mit in die Datenbank in ein extra Feld speichern.
Code: Alles auswählen
....
SaveDialog.DefaultExt:= 'jpg';
SaveDialog.Filter := 'JPEG (Bild Datei)|*.jpg|PNG (Portable Network Grafik)|*.png';
SaveDialog.FileName := MyFileName + '.jpg';
if SaveDialog.Execute then begin
Image1.Picture.Graphic.SaveToFile(SaveDialog.FileName);
....
Wo kann ich abfragen und sicherstellen, unter welchem Dateityp ich das Bild speichern muss.