delphi 图片保存,装载

TABLE1:STUDENT ,图片的字段为PIC,关键字段NUM

有2个数据集TAdoquery.

ADOQuery1 .sql.text:='select * from student'

ADOPIC.sql.text:='select  num,pic  from student where num =:num'

-----------------------------------------装载图片

function TForm1.LoadPicture: Boolean;
var
  tempstream        : TStream;
  tempjpeg          : TJPEGImage;
begin
  Image1.Picture := nil;

  with ADOPIC do
  begin
    close;
    Parameters[0].Value := ADOQuery1.Fieldbyname('num').AsString;
    open;
  end;
  if ADOPIC.FieldByName('pic').ASString <> '' then
  begin
    tempstream := TStringStream.Create(' ');
    tempjpeg := TJPEGImage.Create;
  try
    TBlobField(ADOPIC.FieldByName('pic')).SaveToStream(tempstream);
    tempstream.Position := 0;
    tempjpeg.LoadFromStream(tempstream);
    Image1.Picture.Bitmap.Assign(tempjpeg);
    tempstream.Free;
    tempjpeg.Free;
  except
    ShowMessage('装载图样一失败,请检测图片格式。');
    tempstream.Free;
    tempjpeg.Free;
  end;
  end
end;

 

-----------------------------------保存图片

function TForm1.savepic: Boolean;
var
Myjpeg            : TJPEGImage;
MS                : TMemoryStream;
begin
  ADOPIC.Open;

  if (ADOQuery1.FieldByName('num').AsString = '') then
  begin
    ShowMessage('学号不能为空值');
    Abort;
  end;
  ADOPIC.Open;
  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;
      with ADOPIC do
      begin
        close;
        Parameters[0].Value := ADOQuery1.FieldByName('NUM').AsString;
        open;
        Edit;
        TBlobField(FieldbyName('pic')).LoadFromStream(MS);
        Post;
        UpdateBatch;
      end;
    end
    else
    with MyJPEG do
    begin
      with ADOPIC do
      begin
          close;
          Parameters[0].Value := ADOQuery1.FieldByName('NUM').AsString;;
          open;
          edit;
          FieldbyName('pic').Value := null;
          Post;
          UpdateBatch;
      end;
    end;
    showmessage('保存图片一一成功!');
    MyJPEG.Free;
  except
    showmessage('保存图片一一失败,可能图片的格式有问题');
    MyJPEG.Free;
    exit;
  end;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值