• 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           
      })
    }

  • 相关阅读:
    namespaces in C++
    cout如何刷新缓冲区
    Journey CodeForces 1336F[data structures divide and conquer graphs trees]
    using ll=long long;
    Kaavi and Magic Spell CodeForces 1337E【dp strings】
    摸个🐟
    gcc的几个有用的处理二进制位的内置函数
    Yui and Mahjong Set CodeForces 1337F 【interactive】交互式题
    C++ auto 的使用
    2005年微软十大安全漏洞 java程序员
  • 原文地址:https://www.cnblogs.com/cutone/p/5813138.html
Copyright © 2020-2023  润新知