zoukankan      html  css  js  c++  java
  • h5+jquery自制相机,获取图片并上传

    html代码:

    <div id="contentHolder">
      <video id="video" width="100%" height="527px" autoplay></video>
      <button id="snap" style="display:none">拍照</button>
      <button>返回</button>
      <button id="cancleBtn">重拍</button>
      <button id="stopBtn"><img src="img/takePhoto.png"></button>
      <button id="uploadBtn">上传<button>
      <canvas style="display:none" id="canvas" width="320" height="320"></canvas>//使用者看到的是video,而上传的是canvas中的画像
    </div>

    js代码:

    function onload();
      try {
        document.createElement("canvas").getContext("2d");      //动态创建一个canvas元 ,并获取他2Dcontext。如果出现异常则表示不支持 

        alert("浏览器支持HTML5 CANVAS");
      }catch (e) {
        alert("浏览器不支持HTML5 CANVAS");
      }
      document.createElement("canvas").getContext("2d");
      var canvas = document.getElementById("canvas"),
      context = canvas.getContext("2d"),
      video = document.getElementById("video"),
      videoObj = { "video": true },
      errBack = function (error) {                //错误返回
        console.log("Video capture error: ", error.code);
      };
      //navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow
      if (navigator.getUserMedia) {
        navigator.getUserMedia(videoObj, function (stream) {
          video.src = stream;
          video.play();
        }, errBack);
      }else if (navigator.webkitGetUserMedia) {
        navigator.webkitGetUserMedia(videoObj, function (stream) {
          video.src = window.webkitURL.createObjectURL(stream);
          video.play();
        }, errBack);
      }
      //这个是拍照按钮的事件,
      $("#snap").click(function () {
        context.drawImage(video, 0, 0, 320, 320);   
        //CatchCode();
      });
      //定时器
      var interval = setInterval(CatchCode, "300"); //每300秒调用一遍CatchCode()
      var imgData;
      function CatchCode() {
        $("#snap").click();
        //实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途
        var canvans = document.getElementById("canvas");
        //获取浏览器页面的画布对象
        //以下开始编 数据
        imgData = canvans.toDataURL();
        console.log(imgData);
      }
      $("#stopBtn").click(function(){    //点击拍照
        video.pause();        //暂停video  
        clearInterval(interval);           //清除定时器
      })
      $("#cancleBtn").click(function(){    //点击取消
        video.play();          //启动video,显示图像
        interval = setInterval(CatchCode, "300");    //启动定时器
      })
      $("#uploadBtn").click(function(){               //点击上传
        console.log(imgData);
        var base64Data = imgData.substr(22);     将canvas中的图像转成base64数据
        //在前端截取22位之后的字符串作为图像数据
        //开始异步上传
        $.post(rootUrl+"/user/uploadUserImgeBase.do", { "file": base64Data,"token":token}, function (data) {
          console.log(data);
          if (data.responseCode == "00000") {
            alertModel("上传成功!");
          }else {
            alertModel(data.responseMsg);
          }
        }, "json");     //数据格式,我用的是json           
      })
    }

  • 相关阅读:
    高性能的索引策略(上)
    索引的优点
    Mysql 索引的基础(下)
    Mysql 索引的基础(上)
    如果使用的是orm,是否还需要关系索引
    Mysql 数据类型使用说明
    WCF开发实战系列三:自运行WCF服务
    WCF开发实战系列二:使用IIS发布WCF服务
    WCF开发实战系列一:创建第一个WCF服务
    .Net并行编程之二:并行循环
  • 原文地址:https://www.cnblogs.com/cutone/p/5813138.html
Copyright © 2011-2022 走看看