H5调起手机端的摄像头

这里主要是用input的capture属性。
capture表示,可以捕获到系统默认的设备,比如:camera照相机;camcorder摄像机;microphone录音。accept表示,直接打开系统文件目录。

<label>
	照相机:
	<input type="file" id='image' accept="image/*" capture='camera' multiple>
</label>
<label>
	摄像机:
	<input type="file" id='video' accept="video/*" capture='camcorder'>
</label>

其中multiple属性表示可以多选。

1.对于安卓手机和ios不同处理

在各个机型都可以点击 file 调用相册 和 摄像头拍照

  • 在老版本的安卓中,必须加上capture,否则只能调用相册
  • 在IOS中 加了capture,就只能调用摄像头不能调用相册

解决办法:
判断ios,如果是ios就去掉capture属性.

var file = document.querySelector('input');
if (getIos()) {
   file.removeAttribute("capture");
}
function getIos() {
   var ua=navigator.userAgent.toLowerCase();
   if (ua.match(/iPhone\sOS/i) == "iphone os") {
      return true;
   } else {
      return false;
   }
}

2.获取图片的base64

html部分:

<input type="file" id="file1" accept="image/*" capture="camera" @change="changePic" />
<!-- accept="video/*" 可调用摄像头拍摄视频 -->

js部分:

changePic(e) {
    // console.log(e)
    const _this = this;

    const fileObj = e.target;

    const file = fileObj.files[0];

    const reader = new FileReader();

    reader.readAsDataURL(file);

    reader.onload = function(e) {
          const imgResult = e.target.result;
          // 可预览的图片地址
          _this.imgResult = imgResult;
    };
}

3.实例

我这边自己也做了一个简单的demo:(ios系统测试)
在这里插入图片描述
效果:
在这里插入图片描述
本博客非原创,来自转载https://blog.csdn.net/weixin_39228870/article/details/114370029

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐