代码如下:
procedure TForm1.Button4Click(Sender: TObject);//保存图片到数据库
Var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
Begin
MyJPEG := TJPEGImage.Create;
Try
With MyJPEG do Begin
Assign(Image1.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position := 0;
adoquery1.Edit;
TBlobField(adoquery1.FieldbyName('附档')).LoadFromStream(MS);
adoquery1.Post;
Messagebox(Getactivewindow(), '图像保存完毕!', '保存', MB_OK);
End;
Finally
MyJPEG.Free;
End;procedure TForm1.Button11Click(Sender: TObject);    //显示图片
Var
MyJPEG : TJPEGImage;
MS : TMemoryStream;
Begin
Try
MS := TMemoryStream.Create;
TBlobField(adoQuery1.FieldByName('附档')).SaveToStream(MS);
MS.Position := 0;
MyJPEG := TJPEGImage.Create;
MyJPEG.LoadFromStream(MS);
Image1.Picture.bitmap.Assign(MyJPEG);
Finally
MS.Free;
MyJPEG.Free;
End;

解决方案 »

  1.   

    procedure TForm1.Button11Click(Sender: TObject);    //显示图片 
    Var 
      MS : TMemoryStream; 
    Begin 
      Try 
        MS := TMemoryStream.Create; 
        TBlobField(adoQuery1.FieldByName('附档')).SaveToStream(MS); 
        MS.Position := 0; 
       Image1.Picture.Picture.Graphic.LoadFromStream(MS);   
      Finally 
        MS.Free; 
    End;
      

  2.   

    最好先检查JPEG的文件头是否为正确的JPEG
      

  3.   

    用浏览器打开没有问题,用ACDSEE试试
      

  4.   

    读取图片var   
     stream: TMemoryStream;   
    begin   
     TBLOBFIELD(adoQuery1.FieldByName('附档')).saveToStream(stream);   
     stream.position:= 0;   
     image1.picture.loadFromSteam(stream);   
    end;
      

  5.   

    方法没问题,是标准编程方式。
    可能数据库字段太小了吧?stream内容没有全部保存到数据库中,先使用几K的文件试试。