请教一个图像处理的问题(100)

  • 主题发起人 主题发起人 songyuanhai
  • 开始时间 开始时间
S

songyuanhai

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了个学生学籍管理系统,在学生信息中有一个字段是“照片”,数据库用的sql2000,我在form中使用的是image控件,在添加记录的时候,选择一个图像然后添加到对应字段中,但是老是死机,不运行添加照片就没有,只要运行这个添加图片功能就死机,请大侠指正,先谢谢了!代码为:procedure Tbystjform.Button1Click(Sender: TObject);var pic:Tpicture; jpeg:Tjpegimage;begin dmunit.adobysds.DataSet .Edit; opendialog1.Filter:='JPEG或者BMP图片|*.bmp;*.jpg'; if opendialog1.Execute then begin pic:=tpicture.Create; jpeg:=Tjpegimage.Create; try pic.LoadFromFile(opendialog1.filename); if pic.Bitmap.empty=false then jpeg.assign(pic.Bitmap) else jpeg.LoadFromFile(opendialog1.filename); dmunit.adobysds.DataSet .FieldByName('zp').Assign(jpeg); image1.Picture.Assign(jpeg); finally pic.free; jpeg.free; end; dmunit.adobysds.DataSet .Post; end;end;
 
请各位高手帮帮忙
 
试试下面代码 opendialog1.Filter:='JPEG或者BMP图片|*.bmp;*.jpg'; if opendialog1.Execute then begin dmunit.adobysds.DataSet .Edit; TBlobField( dmunit.adobysds.DataSet .FieldByName('zp') ).LoadFromFile(opendialog1.FileName); dmunit.adobysds.DataSet .Post; end;
 
delphi使用的单元为jpeg, db, dbtables;delphi 存储图片代码片段procedure TForm1.btnPostClick(Sender: TObject);var lMemoStream : TMemoryStream; jpg : TJpegImage;begin lMemoStream := TMemoryStream.Create; jpg := TJpegimage.Create; jpg.Assign(Img.Picture.Graphic); jpg.SaveToStream(lMemoStream); lMemoStream.Position := 0; TBlobField(dm1.adoqrytea.fieldbyname('image')).LoadFromStream(lMemoStream); dm1.adoqrytea.Post;end;delphi从数据库读取到image中的代码片段procedure TForm3.FormShow(Sender: TObject);var MyJPEG : TJPEGImage; MS : TMemoryStream;begin MyJPEG:=TJPEGImage.Create; MS:=TMemoryStream.Create; if not dm1.adostuview.Active then dm1.adostuview.Open; with dm1.adostuview do begin TBlobField(dm1.adostuview.Fields[9]).SaveToStream(MS); ms.Position := 0; MyJPEG.LoadFromStream(MS); Img.picture.assign(MyJPEG); MyJPEg.free; MS.free; end;end;
 
field Assign 方法 可以 给 某些 数据 ,eg memo 的 text , 如果要用 图片,就需要强制转换成 TBlobField ,再给也应该可以 TBlobField(dmunit.adobysds.DataSet .FieldByName('zp')).Assign(jpeg);不过存储的是对象 (包含了非jpeg 数据), 所以用 .loadfromstream 更好
 
TBlobField.LoadFromFile实际上最后还是调用LoadFromStream函数,只不过用LoadFromFile编写代码更省事,你可以看一下delphi源码:procedure TBlobField.LoadFromFile(const FileName: string);var Stream: TStream;begin Stream := TFileStream.Create(FileName, fmOpenRead); try LoadFromStream(Stream); finally Stream.Free; end;end;
 
image 处理jpg时好象就会 出现这种错误 ~个人建议你使用imageen 这是套3方的控件 安装十分方便简单 ~可以在网上查下资料 里面的控件功能相比image强大许多~假如还是有不清楚的地方 可以给我QQ留言24685462
 
怎么在Tblobfield中没有loadfromfile或者loadfromstream呀?是什么原因呀?
 
操作jpeg图片,必须确保你引用了 jpeg 单元。
 
正在调试中,,好像还是死机!到底是什么地方的原因呢
 
图片大时,系统需要一定的时间来处理,你先选择一些比较小的图片文件来测试。---怎么在Tblobfield中没有loadfromfile或者loadfromstream呀?是什么原因呀? -->你用的DELPHI什么版本? Delphi7中,DB.Pas单元的6027行就是这个函数。
 
问题解决了哈,谢谢各位了
 
后退
顶部