Jak zapisac plik JPG do bazy, mam w niej pole blob a w zmiennej jp obrazek
jpg
wykorzystuje ponizsza procedure, wszystko jest ok ale tylko dla plikow BMP
przy JPG wyrzuca blad ze niedozwolone wrzucenie JPG! a na grupie czytalem ze
wrzucenie jpg jest jak najbardziej mozliwe.
jp :TJpegImage;
bs :TBLobStream;
begin
Table1.edit;
bs:=TBlobStream.Create (Table1.fieldbyname ('Zdjecie') as
TBlobField,bmwrite);
jp.SaveToStream (bs);
bs.Free;
Table1.Post
end;
moze istnieje prostszy sposob ? no i oczywiscie skuteczny!
pozdrowienia
dethar
Jak rozumiem, to chcesz w bazie danych przechowywać obrazki w formacie JPEG.
I że przewidziałeś osobne procedury czytające takie obrazki z plików *.JPG
Trochę się temu przyjrzałem i stwierdziłem, że trzeba by zmienić koncepcję.
Na formę kładziemy Image wykorzystując je do oglądania obrazków, a w pliku
danych przechowujemy obrazki w formacie JPEG. Czyli coś np tak:
<DELPHI CODE>
// gdzieś w kodzie nastąpiło:
Tabela.Append;
Tabela.Post;
// i już mamy miejsce na nasz obrazek
// gdzieś w kodzie załadowano obrazek do Image:
Image.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +
'Obrazek.jpg');
// i już mamy go na ekranie.
// Teraz zapisywanie do bazy danych
procedure Ttest.ZapiszClick(Sender: TObject);
var bs :TBlobStream;
begin
Tabela.Edit;
bs := TBlobStream.Create(Tabela.FieldByName ('Fotka') as TBlobField,
bmReadWrite);
try
Image.Picture.Graphic.SaveToStream(bs);
finally
bs.Free;
Tabela.Post;
end;
end;
// I odczytywanie z bazy danych
procedure Ttest.CzytajClick(Sender: TObject);
var js: TJPEGImage; bs :TBlobStream;
begin
bs := TBlobStream.Create(Tabela.FieldByName ('Fotka') as TBlobField,
bmRead);
try
js := TJPEGImage.Create;
try
js.LoadFromStream(bs);
Image.Height := js.Height;
Image.Width := js.Width;
Image.Picture.Bitmap.Assign(js);
finally
js.Free;
end;
finally
bs.Free;
end;
end;
</DELPHI CODE>
Sprawdzone. I co najważniejsze, działa, choć być może można to inaczej
rozwiązać.
--
Sławek