javascript - 如何使用 Vue.Js 在 Android 和 iOS 上打开前置摄像头并拍照?

标签 javascript html css vue.js

我正在开发 PWA Vue.Js 应用程序,我需要使用移动设备的前置摄像头拍摄用户照片。

我已经在我的桌面浏览器上编写了一些代码,但我没有成功让它在移动设备上运行。

这是我到目前为止尝试过的:


<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code><template>
  <div id="camera">
    <div>
      <video ref="video" id="video" width="100%" height="100%" autoplay/>
    </div>
    <div>
      <button id="snap" v-on:click="capture()">Snap Photo</button>
    </div>
    <canvas ref="canvas" id="canvas" width="100%" height="100%"/>>
  </div>
</template></code></pre>
</div>
</div>


<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-js lang-js prettyprint-override"><code><script>

export default {
  name: 'Camera',
  data() {
    return {
      video: {},
      canvas: {},
      captures: []
    }
  },
  mounted() {
    this.video = this.$refs.video;
    if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({ video: true }).then(stream => {
             video.srcObject = stream;
                video.play();
                video.onplay = function () {
                };
                this.video.play();
        });
    }
},
  methods: {
    capture() {
        this.canvas = this.$refs.canvas;
        var context = this.canvas.getContext("2d").drawImage(this.video, 0, 0, 640, 480);
        this.captures.push(canvas.toDataURL("image/webp"));
    }
}
}
</script></code></pre>
</div>
</div>


<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-css lang-css prettyprint-override"><code><style>
    #camera {
        text-align: center;
        color: #2c3e50;
    }
    #video {
        background-color: #000000;
    }
    #canvas {
        display: none;
    }
    li {
        display: inline;
        padding: 5px;
    }
</style></code></pre>
</div>
</div>


我应该怎么做才能让它在移动设备上运行?

最佳答案

为什么要使用跟随 html 5 标签 的按钮它会起作用:

<input type="file" accept="image/*" capture="camera" />

关于javascript - 如何使用 Vue.Js 在 Android 和 iOS 上打开前置摄像头并拍照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955223/

相关文章:

javascript - 如何在我的 javascript 中保存添加或删除类 cookie?

html - 无法选择或单击 <a> 标签中文本元素的链接

javascript - 类型错误:mitsukuApi.send 不是函数

javascript - Bootstrap 导航栏切换不适用于移动设备

javascript - json.parse 在意外标记上失败,而其他解析器认为它是有效的

javascript - 使用 iframe 时使浏览器后退按钮适用于主页

javascript - 在JavaScript中创建自定义UI框架的最佳做法

javascript - 无法在别有用心的调用上设置 jQuery 对话框选项

html - HREF 内的 Perl 变量

html - 如何拒绝 html 表单中的默认 Google Chrome 设置