关于加图片的问题(50分)

F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库是sql server ,我在做人事资料的时候,需要把图片加
入数据里去,因此我在数据库新建一个表table1,把相片的字段(f1)
类型设置为“Image”,由于我没有处理如何把相片加入数据库里,
我有1个问题请教大家:
(1)、我在前台用TDBImage控显示和保存图片,我的问题是如何把硬盘上
*.jpg或*.bmp图像文件保存到数据库表table1的字段f1里去呢?能否写一
段代码来看看
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
t1 : TTable;
mstream1 : TMemoryStream;
// jpeg : TJPEGImage;
begin
// jpeg := TJPEGImage.Create ;
t1 := TTable.Create(nil);
t1.DatabaseName := db1.DatabaseName ;
t1.TableName := 'T_BASE';
t1.Open;
t1.First ;
while not t1.Eof do
begin
if t1.FieldByName('id').AsInteger = nCurrentRec then
begin
mstream1 := TMemoryStream.Create;
// TBlobField(t1.FieldByName('image')).SaveToFile('c:/temp.bmp');
// imageBase.Picture.Bitmap.LoadFromFile('c:/temp.bmp');
TBlobField(t1.FieldByName('image')).SaveToStream(mstream1) ;
mstream1.Position := 0;
// TBlobField(t1.FieldByName('image')).SaveToFile ('c:/2.jpg');
// imageBase.Picture.LoadFromFile('c:/2.jpg');
imageBase.Picture.Bitmap.LoadFromStream(mstream1);//bmp文件
// jpeg.LoadFromStream(mstream1);//JPEG文件
// imageBase.Picture.Assign(jpeg);
// imageBase.Picture.Bitmap.SaveToFile('c:/temp.bmp');
{ if OpenDialog1.Execute then
begin
if FileExists(OpenDialog1.FileName) then
begin
imageBase.Picture.LoadFromFile(OpenDialog1.FileName);
end;
end;}
imageBase.AutoSize := true;
DBGrid1.Visible := false;
imageBase.Show ;
imageBase.OnClick := imageBaseClick;
mstream1.Free ;
end;
t1.Next;
end;
t1.Close;
t1.Free;
 
TDBImage只能显示BMP图片
所以如果用TDBImage是没有办法处理Jpg的
你可以使用一个TImage,如果TDBImage可以直接显示,就用那个显示]
如果不可以,就TBlobField(Fieldbyname('f1')).savetofile('c:/temp/1.jpg');
然后把这个临时图片装入TImage,就可以显示了
当然了,如果要存入图片,也是一样
TBlobField(Fieldbyname('f1')).loadfromfile('c:/temp/1.jpg');
或者参数Query1.Params.loadfromfile('c:/temp/1.jpg',ftblob);
呵呵就可以了
 
多人接受答案了。
 
顶部