procedure TfrmPWeiHu.ADODataSet1AfterScroll(DataSet: TDataSet);
var
  MyJpeg:TJpegImage;
  MyStm:TMemoryStream;
begin
  
  if not ADODataSet1.FieldByName('pic').IsNull then
  begin
    try
      MyJpeg:=TJpegImage.Create;
      MyStm:=TMemoryStream.Create;
      MyStm.Clear;
      TBlobField(ADODataSet1.FieldByName('pic')).SaveToStream(MyStm);
      MyStm.Position:=0;
      MyJpeg.LoadFromStream(MyStm);
      FootImage.Picture.BitMap.Assign(MyJpeg);
    finally
      MyJpeg.Free;
      MyStm.Free;
    end;
  end;
end;
procedure TfrmPWeiHu.FootImageDblClick(Sender: TObject);
var
  TempStream:TMemoryStream;
  JpgPic:TJpegImage;
  s:String;
begin
  try
    JpgPic:=TJpegImage.Create;
    TempStream:=TMemoryStream.Create;
    TempStream.Clear;
    if OpenDialog1.Execute then
    begin
      ADODataSet1.Append;
      JpgPic.LoadFromFile(OpenDialog1.FileName);
      FootImage.Picture.Bitmap.Assign(Jpgpic);
      JpgPic.SaveToStream(TempStream);
      TBlobField(ADODataSet1.FieldByName('pic')).LoadFromStream(tempStream);
      ADODataSet1.Post;
    end;
  finally
    JpgPic.Free;
    TempStream.Free;
  end;
end;

解决方案 »

  1.   

    最简单的办法
    dbimage1对应你的图片字段;
    dbimage1.loadfromfile(yourfilename);
    dbimage1.copytoclipboard;
    dbimage1.pastefromclipboard;
    ok 大功告成!简单吧!
      

  2.   

    接楼上:当然还得保存,用post就行了。
      

  3.   

    to tide_liu(龙飞九天)
    1。好像dbimage1没有loadfromfile这个方法
    2。还有你的yourfilename从哪里来
    3。如果用LoadFromFile(OpenDialog1.FileName);前提还是1
      

  4.   

    省略了一些!
    image1.picture.loadfromfile(opendialog1.filename);
    dbimage1.picture:=image1.picture;
    我一直这样用,很好用的!
      

  5.   

    能不能直接在Database Desktop中给数据库加入图像数据?
      

  6.   

    问题解决了一点!
     tide_liu(龙飞九天) 的方法中漏了picture。
    不过,如果想在Database Desktop就增加图像数据,怎么办?
      

  7.   

    如果是 InterBase 数据库
    去下载 IbExpert 软件
      

  8.   

    假设你已 uses jpg; 让delphi知道如何处理jpg格式你要让你的Database可接受 binary data, 图像只是某种binary data, 在paradox 或 interbase的database可以用blob, 而interbase可再定义为type 0, 然後就将你的DB adware的控件指向这个Blob field如{ Copy a graphic field to a blob field }
    BlobField1.Assign(GraphicField1);
    {Copy strings in a TMemo to a TMemoField}
    MemoField1.Assign(Memo1.Lines);
      

  9.   

    假设你已 uses jpg; 让delphi知道如何处理jpg格式你要让你的Database可接受 binary data, 图像只是某种binary data, 在paradox 或 interbase的database可以用blob, 而interbase可再定义为type 0, 然後就将你的DB adware的控件指向这个Blob field如{ Copy a graphic field to a blob field }
    BlobField1.Assign(GraphicField1);
    {Copy strings in a TMemo to a TMemoField}
    MemoField1.Assign(Memo1.Lines);
      

  10.   

    IbExpert 在哪里可以下载呢?
      

  11.   


      
    //保存
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    MyJPEG : TJPEGImage; 
    MS: TMemoryStream; 
    begin 
    MyJPEG := TJPEGImage.Create; 
    try 
    with MyJPEG do 
    begin 
    Assign(Image.Picture.Graphic); 
    MS:=TMemoryStream.create; 
    SaveToStream(MS); 
    MS.Position:=0; 
    Table1.Edit; 
    TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS); 
    Table1.Post; 
    messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok); 
    end; 
    finally 
    MyJPEG.Free; 
    end; 
    end; //读取
    procedure TForm1.Button1Click(Sender: TObject); 
    var tempstream:TStringStream; 
    tempjpeg:TJPEGImage; 
    begin 
    try 
    tempstream:=TStringStream.Create(' '); 
    TBlobField(Query1.FieldByName('Image')).SaveToStream(tempstream); 
    tempstream.Position:=0; 
    tempjpeg:=TJPEGImage.Create; 
    tempjpeg.LoadFromStream(tempstream); 
    DBImage1.Picture.Bitmap.Assign(tempjpeg); 
    finally 
    tempstream.Free; 
    tempjpeg.Free; 
    end; 
    end; 
    以上是处理JPEG图片格式的