检索过以前的问题了,还是不懂:关于图像的存储和读出! (200分)

  • 主题发起人 主题发起人 xujiancai
  • 开始时间 开始时间
X

xujiancai

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将jpg,bmp,gif的图像保存到sql server数据库了?(用ado访问数据库)
如何对出来(jpg,bmp,gif)?使用image字段吗?
注意,不用保存路径的方法。
请告诉我详细的实现步骤?分数不高我加!

我的做法,为什么不行?请告诉我正确的做法!
procedure TForm2.SaveClick(Sender: TObject);
var Stream:Tmemorystream;
begin
if not(adoTable1.State in [dsEdit, dsInsert])
then adoTable1.Edit;
stream:=Tmemorystream.create;
image1.picture.bitmap.SaveToStream(stream);// .SaveToStream(stream);
(adoTable1.FieldByName('photo') as TBlobField).Loadfromstream(stream);
stream.free;
adoTable1.Post;
end;
<font color="#FF0000" size="6">>bmp可以
JPG,GIF不行</font></p>

procedure TForm2.ReadClick(Sender: TObject);
var
JP: TJPEGImage;
bs: TBlobStream;
begin
bs := TBlobStream.Create((adoTable1.FieldByName('p1') as TBlobField), bmRead);
jp := TJPEGImage.Create;
jp.LoadFromStream(bs);
Image1.Picture.Assign(jp);
bs.Free;
jp.Free;
end;
 
二进制试试
 
我的做法,为什么不行?请告诉我正确的做法!
procedure TForm2.SaveClick(Sender: TObject);
var Stream:Tmemorystream;
begin
if not(adoTable1.State in [dsEdit, dsInsert])
then adoTable1.Edit;
stream:=Tmemorystream.create;
image1.picture.bitmap.SaveToStream(stream);// .SaveToStream(stream);
(adoTable1.FieldByName('photo') as TBlobField).Loadfromstream(stream);
stream.free;
adoTable1.Post;
end;
<font color="#FF0000" size="6">>bmp可以
JPG,GIF不行</font></p>

procedure TForm2.ReadClick(Sender: TObject);
var
JP: TJPEGImage;
bs: TBlobStream;
begin
bs := TBlobStream.Create((adoTable1.FieldByName('p1') as TBlobField), bmRead);
jp := TJPEGImage.Create;
jp.LoadFromStream(bs);
Image1.Picture.Assign(jp);
bs.Free;
jp.Free;
end;
 
程序通过ODBC与SQL SERVER连接
begin
if openpicturedialog1.Execute then
try
usermodule.Table_user.Edit ;
( usermodule.Table_user.FieldByName('user_picture') as tblobfield).LoadFromFile(
openpicturedialog1.FileName
);
usermodule.Table_user.Post ;
except
showmessage ('图片加载失败!') ;
end ;
end;
 
后台请参考以下sql函数:
Readtext:用以读取text和image类型的字段.
Writetext:用以写text和image类型的字段.
Updatetext:用以更改text和image类型的字段.
前台很容易解结:
表结构中用Image类型,用Picture.LoadFromFile方法就可以啦。
读出来的话直接用TDBimage控件即可。

 
我想应该不用在后台实现吧,请告诉我具体怎样做。
To gsand:你的做法根我前面贴出的差不多,不同的是我用的是ado,
但好像只有bmp可以,JPG和GIF都不行!

大家帮帮我!!
 
你可以在保存和取出的时候都使用jpegimage进行。
jpegimage.savetostream;jpegimage.loadfromstream这样应该没有问题。
如果你用
tbitmap.savetostream则也应该用tbitmap.loadfromstream。
 
To all:
其实我也是用stream,但就是不行,听说ado是不支持blobstream的,是吗?
呼唤给出具体的解答!
 
image1.picture.bitmap只对位图图形有用,应该用Image.Picture.Graphic
 
多人接受答案了。
 
后退
顶部