您的位置:首页 > 其它

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

2010-12-14 11:30 411 查看
本文提供一段完整的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

没测试 不知道怎么样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: