最好能给出完整的代码

解决方案 »

  1.   

    var
      myfilestream:tfilestream;
      myblob:tblobfield;
      picturepath:string;
    begin
    picturepath:='c:\a.bmp';
    adoquery1.append;
    myfilestream:=tfilestream.Create(picturepath,fmopenread);
    myblob:=tblobfield(adoquery1.FieldByName('Photo'));
    myblob.LoadFromStream(myfilestream);
    myfilestream.Free;
    end;
    adoquery1.Post;
      

  2.   

    感觉做成临时文件是最稳定的
    procedure TEntryPersonInfor.ViewImage;
    Var
      Jpg :TJpegImage ;
      Path :String ;
    begin
      GetDir(0,Path) ;
      Image1.Picture :=Nil ;
      Image1.Repaint;
      TempJpg :=Path+ '\TempJpg.Jpg' ;
      Jpg :=TJpegImage.Create ;
      TBlobField(adsMaster.FieldByName('Photo')).savetoFile(TempJpg) ;
      Jpg.LoadFromFile(TempJpg);
      Image1.Picture.Assign(Jpg);
      Jpg.Free ;
    end;
      

  3.   

    //调入图片procedure TForm1.Button2Click(Sender: TObject);
    begin
    try
     // OpenPictureDialog1.Filter := 'BMP files (*.bmp)|*.BMP|JPG files (*.jpg,*.jpeg)|*.JPG';
      if OpenPictureDialog1.Execute then
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    except
       showmessage('图片调入错误!');
       abort;
    end;
    end;//保存
    procedure TForm1.Button1Click(Sender: TObject);
    var 
    MyJPEG : TJPEGImage;
    MS: TMemoryStream;
    begin
    MyJPEG := TJPEGImage.Create;
     try
     IF Image1.Picture.Graphic<>NIL  THEN
        with MyJPEG do
        begin
          Assign(Image1.Picture.Graphic);
          MS:=TMemoryStream.create;
          SaveToStream(MS);
          MS.Position:=0;
          ADOTable1.Open;
          ADOTable1.Append;
          ADOTable1.FieldbyName('p_no').asstring:=edit1.Text;
          ADOTable1.FieldbyName('p_na').asstring:=edit2.Text;
          TBlobField(ADOTable1.FieldbyName('photos')).LoadFromStream(MS);
          ADOTable1.Post;
       //   messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
        end;
      finally
        MyJPEG.Free;
        edit1.Text:='';
        edit2.Text:='';
        Image1.Picture:=nil;
      end;
    end;//显示
    procedure TForm1.Button3Click(Sender: TObject);
    var tempstream:TStringStream;
       tempjpeg:TJPEGImage;
    begin
      try
        ADOQuery1.Open;
        tempstream:=TStringStream.Create(' ');
        TBlobField(ADOQuery1.FieldByName('photos')).SaveToStream(tempstream);
        tempstream.Position:=0;
        tempjpeg:=TJPEGImage.Create;
        tempjpeg.LoadFromStream(tempstream);
        Image1.Picture.Bitmap.Assign(tempjpeg);
      finally
            tempstream.Free;
            tempjpeg.Free;
      end;
    end;
      

  4.   

    一个问题开两个帖子?
    保存 :
    var Ms:TmemoryStream;
    begin
      ms:=TmemoryStream.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms) ;
      Ms.Position :=0;
      ADOquery1.append;
      TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
      ADOquery1.Post;
      Ms.Free ;
    end;
    读取到image中:
     Var
    Ms:TStringStream;
    begin
      Ms:=TstringStream.Create('');
      TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);
      Ms.Position :=0;
      Jpg.LoadFromStream(Ms);
      Image2.Picture.Assign(Jpg);
      Ms.Free;
    end;
      

  5.   

    不知你说的是不是MS-SQL Server?
    上面的网友都说的很好,但以我的经验,奉劝你别图片信息直接存入数据库。
      

  6.   

    不知你说的是不是MS-SQL Server?
      上面的网友都说的很好,但以我的经验,奉劝你别图片信息直接存入数据库。
      我公司有个考勤系统,是基于MS-SQL Server 7.0,有个公司买我们的用,他们有300多个员工,我们的程序在“员工资料”功能中直接把图片信息保存到数据库中,结果,每次运行那程序时,至少要2-3分钟才能显示成功加载窗体。
      我们的图片格式为BMP,其实图片也不大,每张约30K左右,但实际运用时就有上面的问题,而且,有时还显示连接超时。呵,把连接时间加长也解决不了要花很长时间才能加载的问题。
      我没写程序,但说了经验,你也要送分给我吧? ^_^