zoukankan      html  css  js  c++  java
  • 保存图片到数据库,从数据库里提取图片

    1、如何实现在Microsoft Access数据库中的图像存储: 
    这里是利用TStream的子类TMemoryStream向Microsoft Access数据库中存储图像的。 
    下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序: 
    procedure TForm1.Button1Click(Sender: TObject); 
    Var 
    MyJPEG : TJPEGImage; 
    MS: TMemoryStream; 
    Begin 
    MyJPEG := TJPEGImage.Create; 
    Try 
    With MyJPEG do 
    Begin 
    Assign(Image.Picture.Graphic); 
    MS:=TMemoryStream.create; 
    SaveToStream(MS); 
    MS.Position := 0; 
    Table1.Edit; 
    TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS); 
    Table1.Post; 
    Messagebox(Getactivewindow(), '图像保存完毕!', '保存', MB_OK); 
    End; 
    Finally 
    MyJPEG.Free; 
    End; 
    End; 
    在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式 
    的中间桥梁的作用。 
    
    2、如何将图像从Microsoft Access数据库中取出并显示出来: 
    下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序: 
    procedure TForm1.Button1Click(Sender: TObject); 
    Var 
    MyJPEG : TJPEGImage; 
    MS : TMemoryStream; 
    Begin 
    Try 
    MS := TMemoryStream.Create; 
    TBlobField(Query1.FieldByName('Image')).SaveToStream(MS); 
    MS.Position := 0; 
    MyJPEG := TJPEGImage.Create; 
    MyJPEG.LoadFromStream(MS); 
    DBImage1.Picture.Bitmap.Assign(MyJPEG); 
    //或是Sender.Picture.Assign(MyJPEG); 
    Finally 
    MS.Free; 
    MyJPEG.Free; 
    End; 
    End; 
    
    ==========================================================================
    
    图片保存到数据库的例子:   
        
      //保存     
      procedure   TForm1.ImageIntoDBBitBtnClick(Sender:   TObject);     
      begin     
          try     
              with   Query1   do     
                  begin     
                      close;     
                      sql.clear;     
                      sql.add('insert   into   img   (imga)   values(:imag)');     
                  end;     
              try     
                  if   FileName<>''   then     
                      ParamByName('Img').LoadfromFile(FileName,ftGraphic)     
                  else     
                      ParamByName('Img')   .asBlob:='';     
                  Query1.ExecSQL;     
              except     
                  ShowMessage('图片保存出错!');     
                  exit;     
              end;     
          except     
          end;     
      end;     
          
      //读取     
      procedure   TForm1.ImageFromDBBitBtnClick(Sender:   TObject);     
      var     
          m_jpegstream:tmemorystream;     
      begin     
          with   Query1   do     
          begin     
              close;     
              sql.clear;     
              sql.Add('select   imga   from   img');     
              try     
                  Open;     
              except     
                  exit;     
              end;     
          end;     
          if   (Query1.FieldByName('imga')   as   tblobfield).asstring=''   then     
          begin     
              exit;     
          end     
          else     
          begin     
              try     
              try     
                  m_jpegStream:=TMemoryStream.Create;     
                  (Query1.fieldbyname('imga')   as   TBlobField).SaveToStream(m_JpegStream);     
                  m_JpegStream.Position:=0;     
                  try     
                      image2.Picture.Graphic:=nil;     
                      image2.Picture.Graphic:=TJpegImage.Create;     
                      image2.Picture.Graphic.LoadFromStream(m_JpegStream);     //读Jpeg     
                  except     
                      Image2.Picture.Bitmap.LoadFromStream(m_JpegStream);       //读Bmp     
                  end;     
              except     
              end;     
              finally     
                  m_JpegStream.Free;     
                  Query1.Close;     
                  Query1.UnPrepare;     
              end;     
          end;     
      end;     
          
      //BMP转换为JPG     
      procedure   TStuXXSLForm.LoadImageBitBtnClick(Sender:   TObject);     
      var     
          MyJpeg:TJpegImage;     
      begin     
          inherited;     
          if   OpenPictureDialog1.Execute   then     
          begin     
              FileName:=OpenPictureDialog1.FileName;     
              Image1.Picture.LoadFromFile(FileName);     
              if   ExtractFileExt(FileName)='.Bmp'   then     
              begin     
                  MyJpeg:=   TJpegImage.Create;     
                  MyJpeg.Assign(Image1.Picture.Bitmap);     
                  FileName:='Photo.Jpg';     
                  MyJpeg.SaveToFile(FileName);     
                  MyJpeg.Free;     
              end;     
          end;     
      end;
    
    用到TBlobField的时候要在接口包含DB,用到TJPEGImage时要在接口包含Jpeg 
    
    
  • 相关阅读:
    WSP部署错误—SharePoint管理框架中的对象“SPSolutionLanguagePack Name=0”依赖其他不存在的对象
    Elevate Permissions To Modify User Profile
    Error with Stsadm CommandObject reference not set to an instance of an object
    ASP.NET MVC3添加Controller时没有Scaffolding options
    测试使用Windows Live Writer写日志
    配置TFS 2010出现错误—SQL Server 登录的安全标识符(SID)与某个指定的域或工作组帐户冲突
    使用ADO.NET DbContext Generator出现错误—Unable to locate file
    CSS
    HTML DIV标签
    数据库
  • 原文地址:https://www.cnblogs.com/beeone/p/1792945.html
Copyright © 2011-2022 走看看