怎么把数据库中的图像显示在  DBImage1 控件中( 或其它控件)

解决方案 »

  1.   

    要设置数据源DATASOURCE将DBIMAGE连接到DATASOURCE就可以了
      

  2.   

    数据库中有两个字段,NO(数字),IMG(图像)我把DBIMAGE1的DATASOURCE设置为DATASOURCE1了,DATAFIELD设置为IMG了,但是出错啊
    是不是DBIMAGE1不支持JPG图像啊?只能显示BMP位图吗
      

  3.   

    显示Bitmap image is not valid.错误
      

  4.   

    处理JPEG类型的图形数据
    在主窗体的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型永久字段。
      

  5.   

    已经搞定它了procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
    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;