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

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

在本文中,我们将向您展示如何构建一个PHP网络摄像头应用程序以显示实时视频流,进行在线网络摄像头捕获,以及如何使用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客户端接收图像:

$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容器:

初始化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正版授权,或了解更多产品信息请点击【咨询在线客服】

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

php webcam,如何使用Dynamic Web TWAIN附加组件构建PHP Webcam App相关推荐

  1. Dynamic Web TWAIN资讯:Web应用程序的扫描仪SDK

    Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件.你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像.然后用户 ...

  2. 分离扫描文档方法(1) —— Dynamic Web TWAIN:如何使用空白页作为扫描文档的分隔器

    应用场景 您希望在网页中连接扫描仪,在网页中进行文档扫描.当您一次性扫描多个文档时,每个文档之间有一页空白页将它们分开,此时您希望在扫描完全部文档后单独保存每组文档. 解决方案 使用Dynamic W ...

  3. 分享:Web应用程序的TWAIN扫描识别工具——DYNAMIC WEB TWAIN

    今天给大家推荐一个扫描识别工具Dynamic Web TWAIN,一个专为Web应用程序设计的TWAIN扫描识别控件.你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相 ...

  4. 分离扫描文档方法(2) —— Dynamic Web TWAIN:如何使用条码/二维码作为扫描文档的分隔器

    在之前的文章中,我们提到了一种扫描文档的分离方法即<分离扫描文档方法(1) -- Dynamic Web TWAIN:如何使用空白页作为扫描文档的分隔器>.本文将再介绍一种扫描文档的分离方 ...

  5. Dynamic Web TWAIN 17.2.5

    文档扫描 SDK 可快速部署您的 Web 应用程序 可靠的基于浏览器的文档扫描 SDK Dynamic Web TWAIN 是专为 Web 应用程序设计的基于浏览器的文档扫描 SDK.只需几行 Jav ...

  6. chrome浏览器上传文件延迟_扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(下)...

    本篇文章将继续上一篇文章为大家介绍Dynamic Web TWAIN关于移动浏览器捕获的使用教程. 步骤4 首先尝试使用移动浏览器页面 此页面适用于桌面浏览器和移动浏览器,在桌面Chrome中,如下图 ...

  7. 从任何兼容 TWAIN 的设备获取图象的控件Dynamic Web TWAIN

    Dynamic Web TWAIN 使得你可以从任何兼容 TWAIN 的设备获取图象,并且上载扫描过的图象到网页服务器.是特别针对网页应用程序设计而提出的真实的网页扫描解决方案.它已经通过了 Lock ...

  8. Dynamic Web TWAIN扫描识别工具改变缓冲区图像大小

    2019独角兽企业重金招聘Python工程师标准>>> Dynamic Web TWAIN扫描识别工具改变缓冲区图像大小http://www.twain100.com/doc/378 ...

  9. windows传真和扫描由于不能访问您的文档_扫描识别工具Dynamic Web TWAIN全年最低价来了!错过再等一年...

    Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件.你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像.然后用户 ...

最新文章

  1. 边缘计算:安全保护 快速响应
  2. 华为机试第10题python
  3. 二分查找(递归和非递归)
  4. python日志_python日志处理
  5. matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
  6. Dll 导出类 [示例代码]
  7. rn 跳转至html5,ReactNative-从RN端跳转到原生界面
  8. Word2Vec学习笔记(四)——Negative Sampling 模型
  9. 华为手机android版本升级失败怎么办,华为手机系统更新好吗 华为手机系统更新方法...
  10. 写一段jdbc连oracle的程序java类_并实现数据查询_一段Jdbc连Oracle的程序,并实现数据查询....
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.8
  12. 搜狗浏览器连接海康摄像头,无法显示画面
  13. python系统学习_【Python系统学习】基础篇
  14. word插入公式不自动斜体的解决办法
  15. 【供应链架构day2】美团收单供应链系统的演进之路
  16. 淡墨写韵,不守起承转合
  17. 小猫爪:嵌入式小知识01-存储器
  18. 官方确认索尼PS5创史上最佳首发记录 国行版可能要2021年见
  19. FBI 网站都被黑了?
  20. 解决centos8 中安装mysql5.7.26时 libtinfo.so.5()(64bit)被依赖的问题

热门文章

  1. 什么是内存泄露,如何避免内存泄露 C++
  2. 操作系统实验报告(二)银行家算法
  3. java移位运算符详解
  4. 自考《操作系统概论》
  5. 网狐6603所有版本--新金典版本最新漏洞。
  6. 网上下载的PPT模板总是会自动切换、自动播放动画,怎么取消自动播放
  7. 凯撒密码---最简单的加密方式之一
  8. PTA:动物爱吃什么(c++,继承)
  9. Hibernate主键生成策略总结
  10. 没什么,国内做任何大项目,不外乎人情.技术是次要的