如何以php形式集成javascript网络摄像头并将其保存到目录中的数据库和图像文件夹中?

如何解决如何以php形式集成javascript网络摄像头并将其保存到目录中的数据库和图像文件夹中?

我在 PHP 页面上创建了一个 HTML 注册表单,我必须将网络摄像头代码集成到表单中,网络摄像头代码单独工作得很好,但无法将其集成到表单中,即图像被捕获但图像未存储到系统上的文件夹中。以及如何仅在我们点击方块时触发相机功能?提前致谢。

基本表单代码-form.php

<!DOCTYPE html>
<html>
<head>

    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">
  
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/south-street/jquery-ui.css" rel="stylesheet"> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
  
    <script type="text/javascript" src="asset/jquery.signature.min.js"></script>
    <link rel="stylesheet" type="text/css" href="asset/jquery.signature.css">
    <script type="text/javascript" src="webcam.min.js"></script>
    </head>
<body>

<form action= "details_entry.php" method="post">
   <table border="1" align="center">
       <tr>
          <td>
              <label> Name </label></td>
              <td><input type="text" name="per_name">
              </td>
        </tr>
        <tr>
          <td>
              <label> Designation </label></td>
              <td><input type="text" name="designation">
              </td>
        </tr>
        <tr>
          <td>
              <label> Name of the organisation/Company </label></td>
              <td><input type="text" name="company_name">
              </td>
        </tr>
        <tr>
          <td>
              <label> Email ID </label></td>
              <td><input type="email" name="email">
              </td>
        </tr>
        <tr>
          <td>
              <label> Phone number </label></td>
              <td><input type="phone" name="phone">
              </td>
        </tr>
        <tr>
          <td>
              <label> Valid document </label></td>
              <td><input type="file" name="documents">
              </td>
        </tr>
        <tr>
        <td>
        <label> Signature </label> </td>
         <td>
             <div id="canvasDiv"></div>
                <br>
                <button type="button" class="btn btn-danger" id="reset-btn">Clear</button>
                <button type="button" class="btn btn-success" id="btn-save">Save</button>
            </div>
            <form id="signatureform" action="" style="display:none" method="post">
                <input type="hidden" id="signature" name="signature">
                <input type="hidden" name="signaturesubmit" value="1">
            </form>
        </div>
  </td>
        </tr>
        <tr>
        <td>
        <label> Click image </label>
        </td>
        <td>
        <center>
<div id="my_camera"></div>
<br />
<input type=button value="Take Snapshot" onClick="take_snapshot()">
<div id="results" ></div>
 </center>
 </td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" name="save" value="Submit" style="font-size:20px"></td>
              
        </tr>
        
        </table>
        </form>
        </body>
        <style>
#my_camera{
 width: 320px;
 height: 240px;
 border: 1px solid black;
}
</style>

        
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
<script>
    $(document).ready(() => {
        var canvasDiv = document.getElementById('canvasDiv');
        var canvas = document.createElement('canvas');
        canvas.setAttribute('id','canvas');
        canvasDiv.appendChild(canvas);
        $("#canvas").attr('height',$("#canvasDiv").outerHeight());
        $("#canvas").attr('width',$("#canvasDiv").width());
        if (typeof G_vmlCanvasManager != 'undefined') {
            canvas = G_vmlCanvasManager.initElement(canvas);
        }
        
        context = canvas.getContext("2d");
        $('#canvas').mousedown(function(e) {
            var offset = $(this).offset()
            var mouseX = e.pageX - this.offsetLeft;
            var mouseY = e.pageY - this.offsetTop;

            paint = true;
            addClick(e.pageX - offset.left,e.pageY - offset.top);
            redraw();
        });

        $('#canvas').mousemove(function(e) {
            if (paint) {
                var offset = $(this).offset()
                //addClick(e.pageX - this.offsetLeft,e.pageY - this.offsetTop,true);
                addClick(e.pageX - offset.left,e.pageY - offset.top,true);
                console.log(e.pageX,offset.left,e.pageY,offset.top);
                redraw();
            }
        });

        $('#canvas').mouseup(function(e) {
            paint = false;
        });

        $('#canvas').mouseleave(function(e) {
            paint = false;
        });

        var clickX = new Array();
        var clickY = new Array();
        var clickDrag = new Array();
        var paint;

        function addClick(x,y,dragging) {
            clickX.push(x);
            clickY.push(y); 
            clickDrag.push(dragging);
        }

        $("#reset-btn").click(function() {
            context.clearRect(0,window.innerWidth,window.innerWidth);
            clickX = [];
            clickY = [];
            clickDrag = [];
        });

        $(document).on('click','#btn-save',function() {
            var mycanvas = document.getElementById('canvas');
            var img = mycanvas.toDataURL("image/png");
            anchor = $("#signature");
            anchor.val(img);
            $("#signatureform").submit();
        });

        var drawing = false;
        var mousePos = {
            x: 0,y: 0
        };
        var lastPos = mousePos;

        canvas.addEventListener("touchstart",function(e) {
            mousePos = getTouchPos(canvas,e);
            var touch = e.touches[0];
            var mouseEvent = new MouseEvent("mousedown",{
                clientX: touch.clientX,clientY: touch.clientY
            });
            canvas.dispatchEvent(mouseEvent);
        },false);


        canvas.addEventListener("touchend",function(e) {
            var mouseEvent = new MouseEvent("mouseup",{});
            canvas.dispatchEvent(mouseEvent);
        },false);


        canvas.addEventListener("touchmove",function(e) {

            var touch = e.touches[0];
            var offset = $('#canvas').offset();
            var mouseEvent = new MouseEvent("mousemove",false);



        // Get the position of a touch relative to the canvas
        function getTouchPos(canvasDiv,touchEvent) {
            var rect = canvasDiv.getBoundingClientRect();
            return {
                x: touchEvent.touches[0].clientX - rect.left,y: touchEvent.touches[0].clientY - rect.top
            };
        }


        var elem = document.getElementById("canvas");

        var defaultPrevent = function(e) {
            e.preventDefault();
        }
        elem.addEventListener("touchstart",defaultPrevent);
        elem.addEventListener("touchmove",defaultPrevent);


        function redraw() {
            //
            lastPos = mousePos;
            for (var i = 0; i < clickX.length; i++) {
                context.beginPath();
                if (clickDrag[i] && i) {
                    context.moveTo(clickX[i - 1],clickY[i - 1]);
                } else {
                    context.moveTo(clickX[i] - 1,clickY[i]);
                }
                context.lineTo(clickX[i],clickY[i]);
                context.closePath();
                context.stroke();
            }
        }
    })

</script>       
<script type="text/javascript" src="webcam.min.js"></script>

<!-- Code to handle taking the snapshot and displaying it locally -->
<script language="JavaScript">

 // Configure a few settings and attach camera
 Webcam.set({
  width: 320,height: 240,image_format: 'jpeg',jpeg_quality: 90
 });
 Webcam.attach( '#my_camera' );
function take_snapshot() {

 // take snapshot and get image data
 Webcam.snap( function(data_uri) {
    Webcam.upload( data_uri,'saveimage.php',function(code,text,Name) {
                    document.getElementById('results').innerHTML = 
                    '' + 
            '<img src="' + data_uri + '"style=" width: 300px;">';
 } );
  
  
 } );
}

</script>
        


</html>

php 连接- details_entry.php

<?php
$server_name="localhost";
$username="root";
$password="";
$database_name="database123";

$conn=mysqli_connect($server_name,$username,$password,$database_name);
if(!$conn)
{
    die("Connection failed:" . mysqli_connect_error());
}

 
  $ip_address = $_SERVER['REMOTE_ADDR'];
//get user ip address details with geoplugin.net
$geopluginURL = 'http://www.geoplugin.net/php.gp?id='.$ip_address;
$addrDetailsArr = unserialize(file_get_contents($geopluginURL));
//get city name by return array
$city = $addrDetailsArr['geoplugin_city'];
//get country name by return array
$country = $addrDetailsArr['geoplugin_countryName'];
$continent = $addrDetailsArr['geoplugin_continentName'];
/*echo '<strong>IP Address</strong>: '.$ip_address.'<br>';
echo '<strong>Continent</strong>: '.$addrDetailsArr['geoplugin_continentName'].'<br>';
echo '<strong>Country</strong>: '.$country.'<br>';
echo '<strong>City</strong>: '.$city.'<br>'; */
if(isset($_POST['save']))
{
    $per_name= $_POST['per_name'];
    $designation= $_POST['designation'];
    $company_name= $_POST['company_name'];
    $email= $_POST['email'];
    $phone= $_POST['phone'];
    $documents = $_POST['documents'];
    $signature = $_POST['signature'];
    $signatureFileName = uniqid().'.png';
    $signature = str_replace('data:image/png;base64,','',$signature);
    $signature = str_replace(' ','+',$signature);
    $data = base64_decode($signature);
    $file = 'signatures/'.$signatureFileName;
    file_put_contents($file,$data);
    $msg = "<div class='alert alert-success'>Signature Uploaded</div>";
    $sql_query = "INSERT INTO entry_details 
    (per_name,designation,company_name,email,phone,document,signature,ip_address,continent,country,city)
    VALUES
    ('$per_name','$designation','$company_name','$email','$phone','$documents','$signatureFileName','$ip_address','$continent','$country','$city')";
    
    $filename =  time() . '.jpg';
$filepath = 'images/';
if(!is_dir($filepath))
    mkdir($filepath);
if(isset($_FILES['webcam'])){
    move_uploaded_file($_FILES['webcam']['tmp_name'],$filepath.$filename);
    $sql="Insert into card(photo) values('$filename')";
    $result=mysqli_query($con,$sql);
    echo $filepath.$filename;
}
} 

   
    
    if(mysqli_query($conn,$sql_query))
    {
        echo"Details entered successfully !";
    }
    else
    {
        echo"error: " . $sql . "" . mysqli_error($conn);
    }
    mysqli_close($conn);




?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res