彩票走势图

如何使用Dynamic Web TWAIN附加组件构建PHP Webcam App

翻译|使用教程|编辑:莫成敏|2020-06-17 13:34:30.233|阅读 210 次

概述:在本文中,我们将向您展示如何构建一个PHP网络摄像头应用程序以显示实时视频流,进行在线网络摄像头捕获,以及如何使用Dynamic Web TWAIN网络摄像头插件将图像上传到网络服务器。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者SharePoint。这个TWAIN控件还支持上传和处理本地图像。

点击下载Dynamic Web TWAIN试用版

是否想让用户从您的PHP应用程序中捕获图片?您可以使用网络摄像头插件轻松实现它。

在本文中,我们将向您展示如何构建一个PHP网络摄像头应用程序以显示实时视频流,进行在线网络摄像头捕获,以及如何使用Dynamic Web TWAIN网络摄像头插件将图像上传到网络服务器。

安装

下载最新版本的Dynamic Web TWAIN。在运行安装程序时,勾选网络摄像头捕获选项。


系统要求

  • 客户端:Windows;IE v6或更高版本,Chrome,Firefox;兼容UVC的网络摄像头
  • 服务器端:PHP 7.3

为Web浏览器构建PHP Webcam App的基本步骤

资源资源

将资源文件夹从Dynamic Web TWAIN目录复制到您的项目。

检查文件Resources \ addon \ dynamsoft.webtwain.addon.webcam.js是否存在。如果忘记安装网络摄像头插件,则必须重新安装Dynamic Web TWAIN。

当前,该插件无法在线下载。

PHP代码

创建一个操作页面upload.php以从Web客户端接收图像:

<?php
	$strJson = "{\"success\":false}";
	
	try{

		$file = $_FILES["RemoteFile"];
		
		$fileName = $_POST["fileName"];
        if ($fileName == "" || $fileName == null) $fileName = $file["name"];
        
        $filePath = dirname(__FILE__) . "/upload/";
        if (!file_exists($filePath)) {
            mkdir($filePath);
        }

        if (file_exists($filePath . $fileName))
        {
            $iniNum = 0;
            if (strpos($fileName, "(") !== FALSE && strpos($fileName, ")") !== FALSE)
            {
                $leftPhPos =  strrpos($fileName, "(");
                $rightPhPos = strrpos($fileName, ")");
                if ($leftPhPos < $rightPhPos) {
                    $numStr = substr($fileName, $leftPhPos + 1, $rightPhPos - $leftPhPos - 1);
                    if (is_numeric($numStr))
                    {
                    	$iniNum = intval($numStr);
                        $fileName = substr($fileName, 0, $leftPhPos) . substr($fileName, $rightPhPos + 1);
                    }
                    else { 
                        $iniNum = 0;
                    }
                }
            }
            $indexPoint = strrpos($fileName, ".");
            $str1 = substr($fileName, 0, $indexPoint) . "(";
            $str2 = ")" . substr($fileName, $indexPoint);
            for ($i = $iniNum; ; ++$i)
            {
                if (!file_exists($filePath . ($str1 . $i . $str2)))
                {
                    $fileName = $str1 . $i . $str2;
                    break;
                }
            }
        }

		$fileFullPath = $filePath . $fileName;

		if(strpos($file["type"], 'text/plain') === false){
			move_uploaded_file($file["tmp_name"] , $fileFullPath);
		}else{
		    $file_contents = base64_decode(str_replace(' ', '+', file_get_contents($file['tmp_name'])));
		    file_put_contents($fileFullPath, $file_contents);
		}

		$strJson = "{\"success\":true, \"fileName\":\"" . $fileName . "\"}";
		

	}
	catch(Exception $ex){
		$strJson = "{\"success\":false, \"error\": \"" . ex.Message.Replace("\\", "\\\\") . "\"}";
	}	

    // Response.Clear();
    header("Content-Type: application/json; charset=utf-8");
    echo $strJson;
?>

HTML代码

创建一个HTML网页index.html

创建一个HTML元素作为Web Twain容器:

<div id="dwtcontrolContainer"></div>

初始化Dynamic Web TWAIN对象并获取网络摄像头列表:

                Dynamsoft.WebTwainEnv.AutoLoad = false;
		Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady); // Register OnWebTwainReady event. This event fires as soon as Dynamic Web TWAIN is initialized and ready to be used

		var DWObject;
		var isVideoOn = true;

		function Dynamsoft_OnReady() {
			DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer'); // Get the Dynamic Web TWAIN object that is embeded in the div with id 'dwtcontrolContainer'
			if (DWObject) {
				DWObject.Width = 504;
				DWObject.Height = 600;

				var arySource = DWObject.Addon.Webcam.GetSourceList();
				for (var i = 0; i < arySource.length; i++)
					document.getElementById("source").options.add(new Option(arySource[i], arySource[i]), i); // Get Webcam Source names and put them in a drop-down box

			}

			document.getElementById('source').onchange = function () {
				DWObject.Addon.Webcam.SelectSource(document.getElementById("source").options[document.getElementById("source").selectedIndex].value);

				SetIfWebcamPlayVideo(true);
				disableButton(document.getElementById("btn-upload"));
			}

			document.getElementById('source').onchange();
		}

要播放和停止视频,请按以下方式调用API:

DWObject.Addon.Webcam.StopVideo();
DWObject.Addon.Webcam.PlayVideo(DWObject, 80, function () { });

图片准备好后,您可以通过调用HTTPUploadThroughPost()将其上传到Web服务器:

        function upload() {
            if (DWObject) {
                // If no image in buffer, return the function
                if (DWObject.HowManyImagesInBuffer == 0)
                    return;

                var strHTTPServer = location.hostname; //The name of the HTTP server. For example: "www.dynamsoft.com";
                var CurrentPathName = unescape(location.pathname);
                var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") + 1);
                var strActionPage = CurrentPath + "upload.php"; // Action page
                DWObject.IfSSL = false; // Set whether SSL is used
                DWObject.HTTPPort = location.port == "" ? 80 : location.port;

                var Digital = new Date();
                var uploadfilename = Digital.getMilliseconds(); // Uses milliseconds according to local time as the file name

                //Upload image in JPEG
                DWObject.HTTPUploadThroughPost(strHTTPServer, DWObject.CurrentImageIndexInBuffer, strActionPage, uploadfilename + ".jpg", OnHttpUploadSuccess, OnHttpUploadFailure);
            }
        } 

网络服务器

要快速部署PHP网络摄像头项目,可以使用PHP内置的Web服务器:

php -S localhost:8000 

由于网络摄像头插件与WebRTC不相关,因此不存在兼容性问题。您可以在任何网络浏览器中使用该应用程序(注:仅Windows)。


如果您对将网络摄像头捕获集成到PHP应用程序中有任何疑问,请告诉我们。


想要购买Dynamic Web TWAIN正版授权,或了解更多产品信息请点击



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP