分享

数据库中图片操作

 独孤求财 2012-03-14

数据库中图片操作

时间:2011-5-30来源:yang 作者: peng点击: 11次

把BMP,JPG图片保存到数据库中及从数据库中取出来显示在iamge上.

procedure TInputResultForm.SaveClick(Sender: TObject);
var
  JPeg: TJPegImage;
  Bmp: TBitmap;
  ff:  Tgraphicfield;    //存放bmp的字段
  mm:  tmemorystream;
begin
  try
    Bmp := TBitmap.Create;
    JPeg := TJPegimage.Create;
    mm:=Tmemorystream.create;
    DM.adoExeAttch.Edit;
  if OpenDialog1.Execute then
    if UpperCase(copy(Opendialog1.FileName,length(Opendialog1.FileName)-2,3))=‘BMP‘ then begin
      Bmp.LoadFromFile(Opendialog1.FileName);
      JPeg.Assign(Bmp);
      JPeg.savetostream(mm);
      TBlobField(DM.adoExeAttch.FieldByName(‘Image1‘)).LoadFromStream(mm);
    end else begin
      JPeg.LoadFromFile(Opendialog1.FileName);
      TBlobField(DM.adoExeAttch.FieldByName(‘Image1‘)).loadfromfile(Opendialog1.FileName);
    end;
    Image1.Picture.Assign(jpeg);
  finally
    JPeg.Free;
    mm.free;
    Bmp.Free;
  end;
end;

procedure TInputResultForm.LoadClick(Sender: TObject);
var
  m:TMemoryStream;
  jpg:TJpegImage;
begin
  inherited;
  m := TmemoryStream.Create;
  if TBlobField(DM.adoExeAttch.FieldByName(‘Image1‘)).BlobSize>0 then
  try
    (DM.adoExeAttchImage1 as TBlobField).SaveToStream(m);
    jpg := TJpegImage.Create;
    m.Position := 0;
    jpg.LoadFromStream(m);
    Image1.Picture.Assign(jpg);
    jpg.Free;
  except
    showmessage(‘供应商上传的图片格式不正确,无法浏览!‘)
  end else
    Image1.Picture.Assign(nil);
  m.Free;
end;

或者:

直接存储方式
Var meJpeg:TJpegImage ;
    sType:String ;
begin
  inherited;
  If OpenPictureDialog1.Execute Then
  Begin
    sType:=ExtractFileExt(OpenPictureDialog1.FileName)  ;
    If (UpperCase(sType)=‘.JPEG‘) or (UpperCase(sType)=‘.JPG‘) Then
    Begin
      Try
        meJpeg:=TJpegImage.Create ;
        meJpeg.LoadFromFile(OpenPictureDialog1.FileName) ;
        DBImage1.Picture.Graphic.Assign(meJpeg) ;
      Finally
        meJpeg.Free ;
      End ; //Try
    End
    Else TBlobField(QInfoBase.FieldByName(‘fPicture‘)).LoadFromFile(OpenPictureDialog1.FileName) ;
    End ; //If Type
  end ;  //If OpenDialog

使用流存储方式
Var ms:TMemoryStream ;
    mJpeg:TJpegImage ;
    sType:String ;
begin
  inherited;
  If OpenPictureDialog1.Execute Then
  Begin
    sType:=ExtractFileExt(OpenPictureDialog1.FileName) ;
    ms:=TMemoryStream.Create ;
    mJpeg:=TJpegImage.Create ;
  Try
    ms.LoadFromFile(OpenPictureDialog1.FileName)  ;
    ms.Position:=0 ;
    If (UpperCase(sType)=‘.JPEG‘) or (UpperCase(sType)=‘.JPG‘) Then
      Begin
        mJpeg.LoadFromStream(ms) ;
        DBImage1.Picture.Bitmap.Assign(mJpeg) ;
      End
    Else
      TBlobField(QInfoBase.FieldByName(‘fPicture‘)).LoadFromStream(ms) ;
  Finally
    ms.Free ;
    mJpeg.Free ;
  End ;
  end ;  //If OpenDialog
End ;  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多