我得到一个access表,其中有一个image字段,类型为:OLE 对象,内容显示为长二进制数据,怎样把图片读到image中,试了好多办法都不行,
var
   FileN:TFileStream;
   myblogstram : TStream;
   FindName,SaveFName:string;
   B: TBitmap;
   jp: TJpegImage;
begin
B := TBitmap.Create;
jp := TJpegImage.Create;
//FileN:=TFileStream.create('c:\tt.bmp',fmCreate);
if  adoquery1.RecordCount>0 then
begin
  myblogstram :=Adoquery1.CreateBlobStream(Adoquery1.FieldByName('image'), bmRead);
  b.LoadFromStream(myblogstram);
  //jp.LoadFromStream(myblogstram);
  //FileN.CopyFrom(myblogstram,0);
  myblogstram.Free;
 end;
//Freeandnil(FileN);
end;
提示:bitmap image is not valid;

解决方案 »

  1.   

    你用流
    var 
      MS: TStream; 
    begin 
      with Table1 do 
      MS:=CreateBlobStream 
    (FieldbyName('image'),bmRead); 
      Image1.Picture.Graphic. 
    LoadFromStream(MS); 
      MS.Free; 
    end; 
      

  2.   

    保存到access中
    var
      myjpeg: Tjpegimage;
      ms: tmemorystream;
    procedure Tform1.Button1Click(Sender: TObject);
    begin
       myjpeg := Tjpegimage.Create;
        try
        with myjpeg do
         begin
            Assign(form1.Image1.Picture.Graphic);
            ms := Tmemorystream.Create;
            savetostream(ms);
            ms.Position := 0;
            TBlobField(FieldByName('image')).LoadFromStream(ms);
          end;
            finally
            myjpeg.Free;
          end;
    end;
      

  3.   

    读出最简单,直接用Assign就可以了。
      

  4.   

    sorry,不是代码的问题,自己解决了