怎么把数据库中的图像显示在 DBImage1 控件中( 或其它控件)
解决方案 »
- 多表查询
- 如何改变第二个fsMDIChild窗口的大小
- 偶在一个窗体中增加一个简单的属性,为什么在对象编辑窗口 ( ObjectInspector)中看不到呢?
- 一个关于vc++中函数返回值类型在delphi中的声明问题!
- 150 高分急问 急 !
- 如何实现用户自定义报表?比如:用户可任意选择打印哪一个字段、宽度、打印行数等.
- 兼职,谁做?
- 如何做一个可以移动的image控件?
- 如何实现浮动工具兰
- 请教关于用DELPHI开发三层数据结构的ORACLE的BLOB字段更新问题?
- 在线等待,解决立刻结贴!关于XP下的程序在98下执行程序控件上的字都变成???号了
- 有点醉了,世上好像只有痴情的男人和薄情的女人
是不是DBIMAGE1不支持JPG图像啊?只能显示BMP位图吗
在主窗体的Uses子句中加入jpeg单元,以便处理Jpeg格式的图形。
因TDbImage控件不能显示Jpeg图形,故这里使用TImage控件实现图形的显示。
示例
procedure TfrmMain.bbtnLoadImageClick(Sender: TObject);
begin
if opDlg.Execute then
begin
if (dmImage.sdsImage.State = dsBrowse) then
dmImage.sdsImage.Edit;
dmImage.sdsImageIMAGE.LoadFromFile(opDlg.FileName);
end;
end;//载入图像JPG
procedure TfrmMain.bbtnDisplayImg(Sender: TObject);
begin
try
dmImage.sdsImageImage.SaveToFile('Temp.JPG');
Self.igJPG.Picture.LoadFromFile('Temp.JPG');
except
on Exception do;
end;
end;//显示图像。
或在相应数据集控件的事件代码中写入如下代码。
procedure TdmImage.sqldsImageAfterScroll(DataSet: TDataSet);
begin
try
dmImage.sdsImageImage.SaveToFile('Temp.JPG');
Self.igJPG.Picture.LoadFromFile('Temp.JPG');
except
on Exception do;
end;
end;//显示图像。其中sdsImageImage为数据集的Blob型永久字段。
var
MS,MT:TStream;
ico:TIcon;
bmp:TBitmap;
gif:TGIFImage;
jpg:TJpegImage;
bType:Array [0..2] of Byte;begin if DataSource1.DataSet.RecordCount=0 then exit; StatusBar1.Panels [1].Text := inttostr(DataSource1.DataSet.RecNo)+'/'+
inttostr(DataSource1.DataSet.RecordCount);
with DataSource1.DataSet do
MT:=CreateBlobStream(FieldbyName('图片'),bmRead);
with DataSource1.DataSet do
MS:=CreateBlobStream(FieldbyName('图片'),bmRead);
Mt.ReadBuffer(bType,4);
if (bType[0]=71)and (bType[1]=73) then //GIF
begin
gif:=TGIFImage.Create ;
gif.LoadFromStream(MS);
Image1.Picture.Assign (gif);
gif.Free ;
end
else if (bType[0]=255)and (bType[1]=216) then //JPG
begin
jpg:=TJpegimage.Create ;
jpg.LoadFromStream(MS);
Image1.Picture.Assign (jpg);
jpg.Free ;
end
else if (bType[0]=0)and (bType[1]=0) then //ICO
begin
ico:=TIcon.Create ;
ico.LoadFromStream(MS);
Image1.Picture.Assign (ico);
ico.Free ;
end
else if (bType[0]=66)and (bType[1]=77) then //BMP
begin
bmp:=TBitmap.Create ;
bmp.LoadFromStream(MS);
Image1.Picture.Assign (bmp);
bmp.Free;
end;
MT.Free ;
MS.Free ;
end;