![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSSQL - как сохранить картинку в таблицу?? [D7, MSSQL]
ViJen © (2005-01-27 15:28:00)День добрый мастера!
У меня есть табличка на MSSQL с полем Image и ADOQuery в Delphi.
Каким образом с помощью квери сохранить картинку из TImage на форме или из файла в табличку и как потом из этого поля показать ее обратно в TImage?
Пробовала через параметры квери - вроде что-то сохраняет, но при попытке достать обратно ругается на неверный формат.
Объясните плиз как обычно такие операции делаются?
Ega23 (2005-01-27 16:05:00) [1]Тока если bmp записываешь, то не читает. А как бы и то и другое читать?
Ну, в моём примере хоть PNG записывай. Только PNG TImage просто так не поймёт :о)
ViJen (2005-01-27 15:59:00) [2]Ага спасибки!! Работает.
Тока если bmp записываешь, то не читает. А как бы и то и другое читать?
Ega23 (2005-01-27 15:58:00) [3]Загрузка в базу:
DMpas.RQImage.ParamByName('Img').LoadFromFile(ExtractFilePath(ParamStr(0))
+'FaceImg.jpg',ftBlob);
DMpas.RQReadImg.Open;
Текст запроса DMpas.RQReadImg:
update PersAdd set PersFaceImg=:Img
where PersID=....
Ega23 (2005-01-27 15:54:00) [4]
procedure DownloadImage(PersID:string);
var
fn,fnBlank,ss:string;
Fld:TBlobField;
begin
fn:=ExtractFilePath(ParamStr(0))+'FaceImg.jpg';
fnBlank:=ExtractFilePath(ParamStr(0))+'Blank.jpg';
ss:='select PersFaceImg,FaceDat from persadd where persid='+PersID;
quOpen(DMpas.RQTemp,ss);
Fld:=TBlobField(DMpas.RQTemp.FieldByName('PersFaceImg'));
if not fld.IsNull then
begin
fld.SaveToFile(fn);
Image1.Picture.LoadFromFile(fn);
end
else
begin
Image1.Picture.LoadFromFile(fnBlank);
end;
DMpas.RQTemp.Close;
end;
Stanislav (2005-01-27 15:44:00) [5]Вот так читать. А на оборот записать.
В принципе не разберешься скину и как записать
function ShowJPG (Field:TBlobField;var Image:TImage):Integer;
var S:TMemoryStream;J:TJPEGImage;
begin
Result:=0;
if not Field.DataSet.Active or Field.IsNull
then
begin
Image.Canvas.Brush.Color:=clBtnFace;
Image.Canvas.FloodFill(0,0,clWhite,fsSurface);
patBlt (Image.Canvas.Handle ,0,0,Image.Picture.Width,Image.Picture.Height,PATCOPY);
end
else
begin
S:=TmemoryStream.Create;
J:=TJpegImage.Create;
S.Position:=0;
Field.SaveToStream(S);
S.Position:=0;
J.LoadFromStream(S);
Image.Picture.Bitmap.Assign(J);
Result:=S.Size;
J.Free;
S.Free;
end;