在delphi中,怎么向数据库加入图像数据?

dedema 2002-02-20 11:54:34
在delphi中,怎么向数据库加入图像数据?
...全文
34 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Carfield 2002-02-26
  • 打赏
  • 举报
回复


//保存
procedure TForm1.Button1Click(Sender: TObject);
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
Table1.Edit;
TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);
Table1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
end;
finally
MyJPEG.Free;
end;
end;

//读取
procedure TForm1.Button1Click(Sender: TObject);
var tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(Query1.FieldByName('Image')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;
以上是处理JPEG图片格式的



dedema 2002-02-26
  • 打赏
  • 举报
回复
IbExpert 在哪里可以下载呢?
erickleung 2002-02-24
  • 打赏
  • 举报
回复
假设你已 uses jpg; 让delphi知道如何处理jpg格式

你要让你的Database可接受 binary data, 图像只是某种binary data, 在paradox 或 interbase的database可以用blob, 而interbase可再定义为type 0,

然後就将你的DB adware的控件指向这个Blob field如

{ Copy a graphic field to a blob field }
BlobField1.Assign(GraphicField1);
{Copy strings in a TMemo to a TMemoField}
MemoField1.Assign(Memo1.Lines);

erickleung 2002-02-24
  • 打赏
  • 举报
回复
假设你已 uses jpg; 让delphi知道如何处理jpg格式

你要让你的Database可接受 binary data, 图像只是某种binary data, 在paradox 或 interbase的database可以用blob, 而interbase可再定义为type 0,

然後就将你的DB adware的控件指向这个Blob field如

{ Copy a graphic field to a blob field }
BlobField1.Assign(GraphicField1);
{Copy strings in a TMemo to a TMemoField}
MemoField1.Assign(Memo1.Lines);

rqcong 2002-02-24
  • 打赏
  • 举报
回复
tide is right,
xumx 2002-02-24
  • 打赏
  • 举报
回复
如果是 InterBase 数据库
去下载 IbExpert 软件
dedema 2002-02-23
  • 打赏
  • 举报
回复
求。。。救!不,求。。。教!!!
dedema 2002-02-22
  • 打赏
  • 举报
回复
问题解决了一点!
tide_liu(龙飞九天) 的方法中漏了picture。
不过,如果想在Database Desktop就增加图像数据,怎么办?
铛铛爸爸 2002-02-21
  • 打赏
  • 举报
回复
最简单的办法
dbimage1对应你的图片字段;
dbimage1.loadfromfile(yourfilename);
dbimage1.copytoclipboard;
dbimage1.pastefromclipboard;
ok 大功告成!简单吧!
phil21 2002-02-21
  • 打赏
  • 举报
回复

procedure TfrmPWeiHu.ADODataSet1AfterScroll(DataSet: TDataSet);
var
MyJpeg:TJpegImage;
MyStm:TMemoryStream;
begin

if not ADODataSet1.FieldByName('pic').IsNull then
begin
try
MyJpeg:=TJpegImage.Create;
MyStm:=TMemoryStream.Create;
MyStm.Clear;
TBlobField(ADODataSet1.FieldByName('pic')).SaveToStream(MyStm);
MyStm.Position:=0;
MyJpeg.LoadFromStream(MyStm);
FootImage.Picture.BitMap.Assign(MyJpeg);
finally
MyJpeg.Free;
MyStm.Free;
end;
end;
end;




procedure TfrmPWeiHu.FootImageDblClick(Sender: TObject);
var
TempStream:TMemoryStream;
JpgPic:TJpegImage;
s:String;
begin
try
JpgPic:=TJpegImage.Create;
TempStream:=TMemoryStream.Create;
TempStream.Clear;
if OpenDialog1.Execute then
begin
ADODataSet1.Append;
JpgPic.LoadFromFile(OpenDialog1.FileName);
FootImage.Picture.Bitmap.Assign(Jpgpic);
JpgPic.SaveToStream(TempStream);
TBlobField(ADODataSet1.FieldByName('pic')).LoadFromStream(tempStream);
ADODataSet1.Post;
end;
finally
JpgPic.Free;
TempStream.Free;
end;
end;
ysmstoneman 2002-02-21
  • 打赏
  • 举报
回复
to tide_liu(龙飞九天)
1。好像dbimage1没有loadfromfile这个方法
2。还有你的yourfilename从哪里来
3。如果用LoadFromFile(OpenDialog1.FileName);前提还是1

ppwsid30 2002-02-21
  • 打赏
  • 举报
回复
get it
Liusp 2002-02-21
  • 打赏
  • 举报
回复
收藏
chenjiong 2002-02-21
  • 打赏
  • 举报
回复
接楼上:当然还得保存,用post就行了。
dedema 2002-02-21
  • 打赏
  • 举报
回复
能不能直接在Database Desktop中给数据库加入图像数据?
铛铛爸爸 2002-02-21
  • 打赏
  • 举报
回复
省略了一些!
image1.picture.loadfromfile(opendialog1.filename);
dbimage1.picture:=image1.picture;
我一直这样用,很好用的!

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧