procedure TForm1.Button1Click(Sender: TObject); var ms : TMemoryStream; jpeg1 : TJPEGImage; begin //将数据库字段的内容读取到流中 ms := TMemoryStream.Create; TBlobField(qrM.FieldByName('IMAGE')).SaveToStream(ms); //从流中加载图片 jpeg1 := TJPEGImage.Create; ms.Position := 0; jpeg1.LoadFromStream(ms); FreeAndNil(ms); //将图片赋给控件(控件会自动显示) Image1.Picture.Assign(jpeg1); FreeAndNil(jpeg1); end; procedure TForm1.Button2Click(Sender: TObject); var bmp: TBitmap; jpeg1 : TJPEGImage; ms : TMemoryStream; begin if OpenPictureDialog1.Execute then begin //从文件加载图片 jpeg1 := TJPEGImage.Create; jpeg1.LoadFromFile(OpenPictureDialog1.FileName); //将图片缩放 bmp := TBitmap.Create; bmp.Width := jpeg1.Width div 2; bmp.Height := jpeg1.Height div 2; bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), jpeg1); //将绽放后的图片替换原图片 jpeg1.Assign(bmp); FreeAndNil(bmp); //将图片存入流中 ms := TMemoryStream.Create; jpeg1.SaveToStream(ms); FreeAndNil(jpeg1); //将流存入数据库字段中 qrM.Edit; ms.Position := 0; qrMIMAGE.LoadFromStream(ms); qrM.Post; FreeAndNil(ms); end; end;
需要注意的时,在对流进行操作时,要将它的Position设置为0