如何把sqlserver2000中的'image'类型字段内容导出到一个IStream变量里?

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3697/3697056.xml?temp=1.781642E-03
      

  2.   


    这个我知道,先将图片读取到Tmemory中,再转成istream
    ///////////////
    我不知道如何将GDI+的TGPImage的SAVE到istream????
    //////////////////IStream与TStream之间的相互转换
    procedure TForm1.Button1Click(Sender: TObject);
    var
      memoStream,OleStream:TStream;
      Stream : IStream;
    begin
      image1.Picture :=nil;
      image2.Picture :=nil;  //显示初始照片
      image1.Picture.LoadFromFile('c:\logo.bmp');
      memoStream := TmemoryStream.Create;
      try
      //将照片保存为TmemoryStream
        image1.Picture.Bitmap.SaveToStream(memoStream);
        memoStream.Position :=0;  //将TmemoryStream转成IStream
        stream:=TStreamAdapter.Create(memoStream);  //将IStream转成TOleStream ==TmemoryStream
        OleStream := TOleStream.Create(Stream);
        image2.Picture.Bitmap.LoadFromStream(OleStream);
      finally
        memoStream.Free;
        OleStream.Free;
      end;
    end;
    ///////////////////////////uses....................AxCtrls,ActiveX;    //必加此二单元
      

  3.   

    stat:=Img1.Save(Stream,clsid,nil);    //这句就是不行,STREAM是空白的,晕呀
    ////////////////////////////////////////////////////////////////////////////////
    var
      stream: IStream;
      graphics : TGPGraphics;
      Img1: TGPImage;
      Img2: TGPImage;
      clsid:TGUID;
      stat:Tstatus;
    begin
    try
        Img1:=TGPimage.Create('d:\d1.bmp');
        graphics := TGPGraphics.Create(image1.Canvas.Handle);
        graphics.DrawImage(Img1,0,0);        //按像素显示    GetEncoderClsid('image/bmp', clsid);    stat:=Img1.Save(Stream,clsid,nil);    //这句就是不行,STREAM是空白的,晕呀    if stat<>ok then
         showmessage('false');    Img2:=TGPimage.Create(stream);    graphics := TGPGraphics.Create(image2.Canvas.Handle);
        graphics.DrawImage(Img2,0,0);        //按像素显示
      finally
        graphics.Free;
        Img1.Free;
        Img2.Free;
      end;
    end;