起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3059|回复: 10

[结贴] html5调用摄像头实现拍照,我在bex5中如何做呢

[复制链接]

27

主题

105

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
发表于 2016-11-29 01:45:04 | 显示全部楼层 |阅读模式
我想在PC端通过笔记本摄像头或者USB摄像头拍照,并且通attachmentSimple上传到服务器,下边是HTML5代码,我在BEX5中如何调用,望求详细知道,谢谢!!!

  1.     <!DOCTYPE html>  
  2.     <html>  
  3.     <head>  
  4.         <title>html5调用摄像头实现拍照</title>  
  5.         <meta charset="utf-8">  
  6.         <meta name="viewport" content="width=device-width, initial-scale=1">  
  7.         
  8.         
  9.         <script>     
  10.   //判断浏览器是否支持HTML5 Canvas           
  11. window.onload = function () {         
  12.      try {                  
  13. //动态创建一个canvas元 ,并获取他2Dcontext。如果出现异常则表示不支持                   document.createElement("canvas").getContext("2d");        
  14.            document.getElementByIdx("support").innerHTML = "浏览器支持HTML5 CANVAS";         
  15.       }         
  16.      catch (e) {           
  17.         document.getElementByIdx("support").innerHTML = "浏览器不支持HTML5 CANVAS";      
  18.         }               
  19.      };               
  20.      //这段代 主要是获取摄像头的视频流并显示在Video 签中           
  21. window.addEventListener("DOMContentLoaded", function () {            
  22.    var canvas = document.getElementByIdx("canvas"),              
  23.      context = canvas.getContext("2d"),               
  24.    video = document.getElementByIdx("video"),         
  25.          videoObj = { "video": true },            
  26.       errBack = function (error) {           
  27.             console.log("Video capture error: ", error.code);   
  28.                };               
  29.     //navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow      
  30.         if (navigator.getUserMedia) {     
  31.               navigator.getUserMedia(videoObj, function (stream) {
  32.                        video.src = stream;               
  33.        video.play();      
  34.              }, errBack);           
  35.     } else if (navigator.webkitGetUserMedia) {        
  36.            navigator.webkitGetUserMedia(videoObj, function (stream) {         
  37.              video.src = window.webkitURL.createObjectURL(stream);           
  38.             video.play();           
  39.         }, errBack);           
  40.     }         
  41.       //这个是拍照按钮的事件,         
  42.      $("#snap").click(function () {         
  43.          context.drawImage(video, 0, 0, 320, 320);     
  44.               //CatchCode();           
  45.     });           
  46.           }, false);           
  47.           //定时器         
  48.   var interval = setInterval(CatchCode, "300");      
  49.                          //这个是 刷新上 图像的        
  50.    function CatchCode() {        
  51.        $("#snap").click();
  52. //实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途   
  53.            var canvans = document.getElementByIdx("canvas");
  54. //获取浏览器页面的画布对象                       
  55.    //以下开始编 数据   
  56.                                   var imgData = canvans.toDataURL();
  57. //将图像转换为base64数据
  58.                var base64Data = imgData.substr(22);
  59. //在前端截取22位之后的字符串作为图像数据      
  60.                             //开始异步上            
  61.    $.post("uploadImgCode.ashx", { "img": base64Data }, function (data, status) {      
  62.              if (status == "success") {                 
  63.       if (data == "OK") {               
  64.            alert("二维 已经解析");                  
  65.     }                    
  66.    else {              
  67.              // alert(data);         
  68.              }         
  69.          }     
  70.               else {   
  71.                     alert("数据上 失败");                 
  72.   }               }, "text");           
  73.           }      
  74. </script>
  75.     </head>  
  76.     <body>  
  77.    
  78.     <table width="200" border="0" cellpadding="1" cellspacing="1">
  79.       <tr>
  80.         <td>  </td>
  81.         <td> </td>
  82.       </tr>
  83.       <tr>
  84.         <td width="320"><video id="video" autoplay=""style='width:320px;height:240px'></video></td>
  85.         <td><canvas id="canvas" width="320" height="240" style="display:none"></canvas>  <img id="snapimg" width="320" height="240" xid="snapimg"></img></td>
  86.       </tr>
  87.     </table>
  88.     <br><p></p></br>
  89.     <button id="snap">拍照</button>   




  90.     </body>  
  91.     </html>
复制代码



91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-11-29 16:20:13 | 显示全部楼层
1.window.onload中实现的可以在model的onload事件中实现
2.x5中div用xid,获取元素可以用
this.getElementByXid("xid");
3.获取到文件后上传可以参考
http://bbs.wex5.com/forum.php?mod=viewthread&tid=91095
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

27

主题

105

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2016-11-29 17:21:48 | 显示全部楼层
jishuang 发表于 2016-11-29 16:20
1.window.onload中实现的可以在model的onload事件中实现
2.x5中div用xid,获取元素可以用
this.getElementBy ...

麻烦进一步指点一下在onload,怎么调用我上边贴的代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-11-29 17:42:57 | 显示全部楼层
.x5中div用xid,获取元素可以用
this.getElementByXid("xid");

创建元素可以用jquery的方式
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

27

主题

105

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2016-11-29 17:52:38 | 显示全部楼层
jishuang 发表于 2016-11-29 17:42
.x5中div用xid,获取元素可以用
this.getElementByXid("xid");

那我怎么引用html5网页呢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-11-30 09:00:29 | 显示全部楼层
如果要直接嵌入html5的页面,需要用iframe
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

27

主题

105

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2016-11-30 12:31:30 | 显示全部楼层
jishuang 发表于 2016-11-30 09:00
如果要直接嵌入html5的页面,需要用iframe

直接嵌入iframe,x5无法获取并存储图片呀
官方能否出个插件,或者出个完整的html5调用摄像头拍照的例子
谢谢啦
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-11-30 13:35:38 | 显示全部楼层
目前没有这样的案例

iframe中可以调用父页面的方法进行存储
http://docs.wex5.com/wex5-ui-question-list-2012/
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

27

主题

105

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2016-11-30 13:40:45 | 显示全部楼层
jishuang 发表于 2016-11-30 13:35
目前没有这样的案例

iframe中可以调用父页面的方法进行存储

这方面大家的需求挺多的,手机端都可以做到,PC端应该没问题呀,这样,调用就方便多了您给反馈一下呗
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2016-11-30 15:08:44 | 显示全部楼层
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-17 17:54 , Processed in 0.095013 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表