数据库图片存取(New)

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

猜你喜欢

转载自www.cnblogs.com/CipherLab/p/12356499.html