Access中保存图片

来源:互联网 发布:matlab cell转为数组 编辑:程序博客网 时间:2024/05/01 16:19

 将JPG格式图片保存到ACCESS数据表中

 

var
  Ind,i:Integer;
  FName:string;
  AJPeg:TJPEGImage;
  temp:TBitmap;
begin
  if opd1.Execute then
  begin
    btnAdd.Enabled:=False;
    Ind:=Opd1.Files.Count;
    for i:=0 to Ind-1 do
    begin
      FName:=opd1.Files.Strings[i];
      Application.ProcessMessages;
      tbl1.Append;
      tblPictureName.AsString:=FName;
      if UpperCase(Copy(FName,Length(Fname)-3,4))=’.JPG’ then
      begin
        AJpeg:=TJPEGImage.Create;
        AJpeg.LoadFromFile(FName);
        Temp:=TBitmap.Create;
       Image1.Height:=Ajpeg.Height;
        Image1.Width:=Ajpeg.Width;
        Image1.Picture:=nil;
        Image1.Canvas.Draw(0,0,Ajpeg);
        DBImage1.Picture:=Image1.Picture;
        AJpeg.Free;
      end
      else
        tblPicture.LoadFromFile(FName);
      tbl1.Post;
    end;
  end;
说明:
tbl1:TADOQuery;
opd1:TOpenPictureDialog;

tblPicture是tbl1的字段,OLE型。
uses
  JPEG;
************************************************************
 人家是用access,肯定用ado的。  
  uses   Jpeg  
   
  procedure   SaveBitmapToDb(const   FileName:   string);  
  var  
      Bitmap:   TBitmap;  
      JpegImage:   TJpegImage;  
      MS:   TMemoryStream;  
  begin  
      Bitmap   :=   TBitmap.Create;  
      JpegImage   :=   TJpegImage.Create;  
      MS   :=   TMemoryStream.Create;  
      try  
          Bitmap.LoadFromFile(FileName);  
          JpegImage.Assign(Bitmap);  
          JpegImage.SaveToStream(MS);  
          AdoTable1.Append;  
          TBlobField(AdoTable1.FieldByName('Picture')).LoadFromStream(MS);  
          AdoTable1.Post;  
      finally  
          Bitmap.Free;  
          JpegImage.Free;  
          MS.Free;  
      end;  
  end;  

判断照片字段是否为空用if dmdata.ADOQUserInfo.FieldByName('照片').IsNull,清空image中的图像用image.picture:=NIL值为NIL.

原创粉丝点击