如何把表中的blob字段用一个Timage(不是Tdbimage)的进行处理?

wzhong 2003-10-20 04:03:04
如何把表中的blob字段用一个Timage(不是Tdbimage)的进行处理?
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bales 2003-10-21
  • 打赏
  • 举报
回复
楼上的也只是将bmp和jpg分别辩断进行保存和读取。
我觉得最好的办法就是将bmp格式的文件转为jpg格式进行保存和读取,这样更方便。
我的方法:
//将图片格式均转换为jpg进行存入。
pjpg:=TJpegImage.Create;
if extractfileext(openpicture1.dialog.filename)='.bmp' then
pjpg.assign(Carimage.picture.bitmap)
else
if (extractfileext(openpicture1.dialog.filename)='.jpg') or (extractfileext(openpicture1.dialog.filename)='.jpeg') then
pjpg.assign(carimage.picture)
else
exit;
try
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(DM.CarQuery.fieldbyname ('照片')).LoadFromStream(pic);

finally
pic.Free;
pjpg.free;bmp1.free;
end;

//读取时

try
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(DM.CarQuery.fieldbyname ('照片')).savetoStream(pic);
if pic.Size=0 then
exit;
pic.position:=0;
pjpg.LoadFromStream(pic);
Carimage.picture.assign(pjpg);
finally
pjpg.Free ;
pic.Free ;
end;
kerosun 2003-10-21
  • 打赏
  • 举报
回复
procedure TfrmMain.LoadImg(Sender: TObject);
begin
if opDlg.Execute then
begin
if (dmImage.sdsImage.State = dsBrowse) then
dmImage.sdsImage.Edit;
dmImage.sdsImageIMAGE.LoadFromFile(opDlg.FileName);
end;
end;

procedure TfrmMain.DisplayImg(Sender: TObject);
begin
try
dmImage.sdsImageImage.SaveToFile('Temp.JPG');
Self.igJPG.Picture.LoadFromFile('Temp.JPG');
except
on Exception do;
end;
end;

或者将Display的代码写到AfterScroll事件处理函数中。
lead001 2003-10-20
  • 打赏
  • 举报
回复
//写入
var
 MS: TMemoryStream;
begin
 MS:=TMemoryStream.create;
 Image1.Picture.Bitmap.SaveToStream(MS);
 MS.Position:=0;
 Table1.Append;
 //在数据库中添加一条记录
 TBlobField(Table1.FieldbyName(’image’)).LoadFromStream(MS);
 Table1.Post;
 //将所作的更新写入数据库
end;
//读取
var
 MS: TStream;
begin
 with Table1 do
  MS:=CreateBlobStream(FieldbyName(’image’),bmRead);
 Image1.Picture.Bitmap.
 LoadFromStream(MS);
 MS.Free;
end;



读入
ADOTable1.Append;
TBlobField(ADOTable1.FieldByName('image')).LoadFromFile('C:\WINNT\Web\Wallpaper\Windows 2000.jpg');
ADOTable1.Post;

读出
var
Jpg:TJPEGImage;
Buf:TMemoryStream;
begin
Jpg:=TJPEGImage.Create;

Buf:=TMemoryStream.Create;
TBlobField(ADOTable1.FieldByName('image')).SaveToStream(Buf);
Buf.Position:=0;
Jpg.LoadFromStream(Buf);
Image1.Picture.Assign(jpg);

Buf.Free;
Jpg.Free;
bales 2003-10-20
  • 打赏
  • 举报
回复
这样的话只限bmp格式
wzhong 2003-10-20
  • 打赏
  • 举报
回复
Image1.Picture.Assign(Qry.FieldByName('asdasd'));= =>讀入圖片

Qry.FieldByName('ok').Assign(Image1.Picture.Bitmap);= = >寫入圖片

2,496

社区成员

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

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