Delphi實現拍照控制元件的程式程式碼
阿新 • • 發佈:2018-12-24
完整的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 notVideoCap1.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;