发新话题
打印

[转载]DIY个照相机-Delphi实现摄像头拍照功能

[转载]DIY个照相机-Delphi实现摄像头拍照功能

  信息来源:CSDN

  简介:本文提供一段完整的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;
//请首先下载TVideoCap控件
谁再说我是流氓豆,我就对谁耍流氓。

TOP

发新话题