实现利用摄像头进行拍照的功能

来源:互联网 发布:linux网络服务器 编辑:程序博客网 时间:2024/06/07 22:33

本文提供一段完整的Delphi代码,实现利用摄像头进行拍照的功能。注意需要TVideoCap控件支持。
  procedure Tfrm1.Button2Click(Sender: TObject);
  Var
  jpeg: TJPEGImage;
  bmp: TBitmap;
  MyStm:TMemoryStream;
  strfilename,strcard:String;
  begin
  inherited;
  strfilename:=extractfilepath(Application.ExeName);
  with DBEdit12.DataSource.DataSet do
  begin
  
  if not VideoCap1.SaveAsDIB then
  begin
  ShowMessage('拍摄照片失败');
  Abort;
  end;//

  bmp:= TBitmap.Create;
  try
  bmp.LoadFromFile(strfilename+ 'Capture.bmp' );
  MyStm:=TMemoryStream.Create;
  jpeg:= TJPEGImage.Create;
  try
  jpeg.Assign( bmp );
  jpeg.compress;
  jpeg.SaveTofile( strfilename+'Capture.jpg');
  strfilename:=strfilename+'Capture.jpg';
  jpeg.LoadFromFile(strfilename);
  jpeg.SaveToStream(MyStm);
  MyStm.Position:=0;
  OpenQry(query1,'select count(1) as cnt from tb_photo where card_no='''+strcard+'''');//先查找是否有此卡号
  OpenQry(pubqry,'select * from tb_photo where card_no='''+strcard+'''');//打开卡号数据表
  {OpenQry是自定义打开数据表的函数
  OpenQry(qry1:TQuery,ssql:String);
  begin
  with qry1 do
  beign
  if active then
  close;
  sql.clear;
  sql.add(ssql);
  try
  open
  catch
  on E: Exception do ErrorDialog(E.Message, E.HelpContext);
  end;//try
  end;
  end;
  }
  with query1 do
  begin
  if pubqry.Fields[0].AsInteger >0 then //先判断此卡号的图片是否存在,若存在,替换;否则,插入。
  Edit
  else
  Insert;

  FieldByName('card_no').AsString :=strcard;
  TBlobField(FieldByName('photo')).LoadFromStream(MyStm);
  Post; //统一提交
  end;//with
  finally
  MyStm.Free;
  jpeg.free;
  end; //try
  finally
  bmp.free;
  end;//try
  end;//with
  end;


该文章转载自无忧考网:http://www.51test.net

没测试 不知道怎么样

原创粉丝点击