【H5】 实现调用相机拍照功能

2023-11-15

【H5】 实现调用相机拍照功能:

效果图如下:

在这里插入图片描述

实现代码如下:

<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>摄像头调用</title>
  <style>
    * {margin: 0px;padding: 0px;}
    body {background: #4C5666;}
    #video {
      width: 610px;
      height: 510px;
      background-color: #fff;
      margin: 100px auto 0;
      border-radius: 10px;
    }
    .video_top {
      width: 100%;
      height: 50px;
      /* background-color: #0ff; */
      line-height: 50px;
    }
    .video_top a {
      float: left;
      text-decoration: none;
      color: #000;
      margin-left: 20px;
    }
    .video_top p {
      float: left;
      margin-left: 200px;
    }
    .video_con {
      height: 410px;
      background: #787878;
    }
    .video_bot {
      height: 50px;
      line-height: 50px;
      margin-left: 20px;
    }
    .video_bot a {
      color: #000;
      text-decoration: none;
    }
    #canvas {
      display: block;
      margin: auto;
    }
  </style>
</head>

<body>
  <div id="video">
    <div class="video_top">
      <a href="javascript:;" onclick="getPhoto()">拍照</a>
      <p>相机</p>
    </div>
    <div class="video_con">
      <video id="v" width="610" height="410" autoplay></video>
    </div>
  </div>
  <canvas id="canvas" width="610" height="400"></canvas>
  <script>

    var can, ctx;

    ~(function () {
      // 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象
      if (navigator.mediaDevices === undefined) {
        navigator.mediaDevices = {};
      }
      if (navigator.mediaDevices.getUserMedia === undefined) {
        navigator.mediaDevices.getUserMedia = function (constraints) {
          // 首先,如果有getUserMedia的话,就获得它
          var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

          // 一些浏览器根本没实现它 - 那么就返回一个error到promise的reject来保持一个统一的接口
          if (!getUserMedia) {
            return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
          }

          // 否则,为老的navigator.getUserMedia方法包裹一个Promise
          return new Promise(function (resolve, reject) {
            getUserMedia.call(navigator, constraints, resolve, reject);
          });
        }
      }
      const constraints = {
        video: true,  //打开摄像头
        audio: false  //打开录音
      };
      let promise = navigator.mediaDevices.getUserMedia(constraints);
      promise.then(stream => {
        let v = document.getElementById('v');
        // 旧的浏览器可能没有srcObject
        if ("srcObject" in v) {
          v.srcObject = stream;
        } else {
          // 防止再新的浏览器里使用它,应为它已经不再支持了
          v.src = window.URL.createObjectURL(stream);
        }
        v.onloadedmetadata = function (e) {
          v.play();
        };
      }).catch(err => {
        console.error(err.name + ": " + err.message);
      })

      can = document.getElementById("canvas")
      ctx = can.getContext('2d');

    })();
    function getPhoto() {  //截图
      ctx.drawImage(v, 0, 0, 610, 410);
    }
  </script>
</body>

</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【H5】 实现调用相机拍照功能 的相关文章

  • WebSocket协议深入理解

    1 WebSocket和HTTP的关系 WebSocket只有在建立握手连接的时候借用了HTTP协议的头 连接成功后的通信部分都是基于TCP的连接 总体来说 WebSocket协议是HTTP协议的升级版 2 研究WebSocket的思路 服
  • 在react中如何结合antd实现分页功能

    在react中如何结合antd实现分页功能 步骤如下 1安装antd npm i antd s 2在 src App css中引入 antd dist antd css import antd dist antd css 3在需要用分页器的
  • 企业网上下单订货管理软件源码搭建功能介绍

    网上下单订货管理软件源码搭建功能介绍 订货通订单管理系统APP 一 系统概述和用途 系统基于网络 实现厂家和代理商批发商通过网络下单订货功能 什么是订货通 什么是企业订货管理系统 是一款针对中小型企业通过网络实现 厂家和客户 经销商 批发商
  • innerHTML与XSS攻击

    HTML5为所有元素提供了一个innerHTML属性 既能获取对象的内容又能向对象插入内容 属性值 HTML标签 文本 浏览器会将属性值解析为相应的DOM树 HTML解析器在浏览器中是底层代码比JavaScript方法快很多 同时意味着替换
  • 移动互联网终端的touch事件,touchstart, touchend, touchmove

    前言 如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP 这个页面上肯定是有很多可点击区域的 如果用户触摸到了那些可点击区域怎么办呢 诸如智能手机和平板电脑一类的移动设备通常会有一个电容式触摸屏 capacitive
  • Vue组件按需引入时v-if和v-show的区别

    普通加载 在父组件中先import子组件 然后在components模块中注册子组件 在进 入页面时 会随着加载当前页面的js文件就加载子组件的内容 子组件的内容和父组件的内容在同一个js文件 按需加载 子组件显示的时候 才会去加载子组件的
  • Failed to load response data:No data found for resource with given identifier

    一 遇到问题 最近项目中表单提交需求遇到了这个问题 Failed to load response data No data found for resource with given identifier 翻译 加载响应数据失败 找不到具
  • 修改网页logo

    在用浏览器打开网站的时候 浏览器标签页上面有网站的图标 类似于logo小图标 如下图 步骤1 打开你的tomcat的安装目录 我的目录实在G盘 G apache tomcat 7 0 53 windows x64 apache tomcat
  • 基于vue-cli3模板的axios封装项目

    为了更便捷的使用项目框架 本模板为空白项目 但是已经为大家封装了axios方法和post get请求 内有基础案例 请大家按着自己项目需要进行修改使用 axios interceptors response use response gt
  • ElementUi常用组件创建前端页面

    elementui 创建前端页面
  • JS有小数保留两位,整数不显示小数

    在很多时候要展示数据 会有各种小数处理 碰到页面的数据要根据不同的情况展示不同格式的数据 比如得到的数据是一个小数 现在要将小数保留两位 而整数则不显示小数点 显示整数格式 使用toFixed n 方法 toFixed 2 里面的2表示保留
  • web前端技术笔记(九)JavaScript介绍、变量、操作元素属性

    JavaScript JavaScript介绍 变量 变量类型 变量 函数 属性 函数参数命名规范 获取元素方法一 操作元素属性 通过 操作属性 通过 操作属性 innerHTML JavaScript介绍 JavaScript是运行在浏览
  • jquery attr()方法 添加,修改,获取对象的属性值

    转自 http hi baidu com 0701u item b8ec62c1daba973eef466524 jquery中用attr 方法来获取和设置元素属性 attr是attribute 属性 的缩写 在jQuery DOM操作中会
  • HTML 5 标签、属性、事件及浏览器兼容性速查表

    HTML 5 可以说是近十年来 Web 标准最巨大的飞跃 和以前的版本不同 HTML 5 并非仅仅用来表示 Web 内容 它的使命是将 Web 带入一个成熟的应用平台 在这个平台上 视频 音频 图象 动画 以及同电脑的交互都被标准化 尽管
  • HTML头部

    目录 实例 HTML 元素 HTML
  • WEB交互界面易用性设计和验收的指导性原则

    随着企业intranet和国际internet的迅速发展 越来越多的工作流程 商务交易 教育 培训 会议和讲座 以及个人消费娱乐都被转移到所谓的万维网 World Wide Web 以下简称WEB 上来了 与此相对应的是交互操作的复杂性越来
  • 微信小程序:图片高度设置无效问题

    控制台查看元素 显示其style中多了一个没有设置的高度值 找了很久发现是因为image标签设置了mode widthFix 此时高度会自适应 样式中设置高度无效
  • webpack5 配置&使用 文档(大全)

    一 起步 1 基本安装 首先我们创建一个目录 初始化 npm 然后 在本地安装 webpack 接着安装 webpack cli 此工具用于在命令行中运行 webpack mkdir webpack demo cd webpack demo
  • html创建添加地图(超简单)

    1 打开百度地图创建平台 百度地图创建平台 2 根据个人需求改就行了 可加标注 3 点击获取代码 复制下来就可以用了 4 个人用的是HBulider 复制到里面可直接用了 如果有文字显示问题 把编码改成utf 8就行了 5 地图控件位置在网
  • 测试基础知识

    常见测试分类 按测试阶段划分 单元测试 针对程序源码进行测试 国内是开发自测 集成测试 又称接口测试 针对模块间的访问地址进行测试 系统测试 对整个系统进行测试 包括功能 兼容性 文档等 验收测试 分为内测和公测 按代码可见度划分 黑盒测试

随机推荐

  • Albumentations 对 PIL 图像进行数据增强

    要使用 Albumentations 对 PIL 图像进行数据增强 你需要将 PIL 图像转换为 NumPy 数组 并使用 Albumentations 库中的转换函数来进行数据增强 以下是一个示例代码 import albumentati
  • dhcp协议配置练习

    路由器配置 配置接口ip地址 配置地址池 开启dhcp全局映射 结果 Pc1 Pc2 Pc3 Pc4
  • postman中post请求正常,但是利用postman生成C#后台http模拟代码之后调用失败问题记录

    postman中post请求正常 但是利用postman中code功能生成C 后台代码之后 填入C 后台失败 postman中code生成的代码引用的是RestSharp Restful Client开发 RestSharp帮助类 post
  • vue特性 is ref

    is属性 使用is标签解决页面中出现的小bug 例如下面的例子 div table tbody tbody table div
  • Linux INPUT 子系统实验

    目录 input 子系统 input 子系统简 input 驱动编写流程 input event 结构体 硬件原理图分析 实验程序编写 修改设备树文件 按键input 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测
  • springBoot打印请求信息日志,如请求头,请求体,请求路径等

    背景 和前端联调 前端总是说接口对了呀 后端说 没有进我的方法呀 后端加日志拦截所以请求 过程 springmvc代码 包装类中报错getReader has already been called for this request 代码里
  • @RefreshScope注解底层源码分析

    写在前面 最近在研究Spring Cloud和Spring Cloud Alibaba源码 在看到Nacos的配置中心的时候 有注意到自动刷新配置的玩法 底层实现依靠 RefreshScope注解 那么为什么要写这篇文章呢 笔者认为 Ref
  • 关于使用Tensorflow时,Optimizer定义的位置不正确时出现的错误

    参考 1 https github com tensorflow tensorflow issues 7244 2 https stackoverflow com questions 47765595 tensorflow attempti
  • 基于Echarts的数据可视化大屏

    本项目学习于b站up主 视频链接 up主分享的资料 gitee仓库 其中有笔记 笔记链接 项目总结 项目主要分为前端页面的布局和Echarts图表的嵌入 页面主要就是css较为繁琐 图表毕竟官网有模板 操作较为简单 以后有时间会利用爬虫的数
  • 西安电子科技大学第二届程序设计新生赛-F-zxy的长跑【欧拉回路】

    题目链接 好极了的欧拉回路 我们想知道怎样才能跑完所有的边 我们可以从度为奇数的点出发 因为这是欧拉回路的无向图的先觉调节 当然 这道题还有另外一种可能就是这是一个环 1 gt 2 2 gt 3 3 gt 4 4 gt 1 那么就没有奇数度
  • 《java开发高频面经总结大合集》你想要的都在这里了

    前言 很多人说到面试 头一下就大了 各种不自信 是实力不够还是信心不够 面试除了你平时不断积累实力 另一方面也需要讲究面试方法和技巧 我特别喜欢一句话 不打没有准备的战 为帮助开发者们提升面试技能 有机会入职BAT等大厂公司 所以 我采访了
  • 100流明相当于多少w_1990年的100元,相当于2020年的多少钱?

    1990年距今已经30年了 可以说我国是发生了翻天地覆的变化 不管是从经济水平还是老百姓的收入水平都是这样 在80年代的时候 也许 万元户 代表的就是 有钱人 而到了90年代 家庭财富超过万元的已经可以说是比较多了 起码相比80年代来说的话
  • 2023华为OD机试真题【施肥问题】

    解题思路 首先需要计算每个果园的施肥时间 即果园面积除以施肥机能效 然后找到最小的施肥机能效 保证施肥任务能在规定时间内完成 如果施肥天数小于果园数量 则无法完成施肥任务 返回 1 如果施肥天数等于果园数量 则直接返回最大果园面积 对果园面
  • 汇编语言实现跑马灯 8051单片机

    通过一位 F 的16进制 转换为 2进制的 1111 然后移动一位 有三极管开关所改变 0的时候发光 1的时候变暗 所以一开始0FFH表示高8位为0 低8位为1111 1111 表示全暗 然后右移变为1111 1110亮第一个等 之后类推
  • 推荐这款神器!每年都有数以百万的大学生想用它!闲鱼都卖两百!

    文末有下载链接 如同明日将死那样生活 如同永远不死那样求知 甘地 image 这是一个能把破解者气死的软件 辛辛苦苦破解的软件 却被别人拿去收费标价200元 真买了 吃亏的是你 在我这 不用钱 说到论文翻译 真的是让人抓狂 每年百万的大学生
  • 【stm32】wifi ESP8266的透传 实验二(HAL库开发)

    一 总算完成了透传 感觉没几行代码 就是在昨天的基础上 对ESP8266的AT指令进行了封装 什么选择工作模式 STA 还是 AP 查询附近WIFI热点 连接WIFi 见解服务器的IP和端口 开启透传 我的代码的缺点 1 有点简单粗暴 逻辑
  • 教你使用gitee+PicGo+typora搭建免费的Markdown图床

    文章目录 创建gitee仓库 设置私人令牌 下载PicGo typora设置 测试时出错可能原因 注意 gitee添加了防盗链 屏蔽外链访问 注意 gitee添加了防盗链 屏蔽外链访问 注意 gitee添加了防盗链 屏蔽外链访问 现使用阿里
  • [西湖论剑2021中国杭州网络安全技能大赛]Yusa的秘密 writeup

    西湖论剑2021 Yusa的秘密 Sakura组织即将进攻地球 此时你意外得到了该组织内某个成员的电脑文件 你能从中发现本次阴谋所用的关键道具吗 注 题目中包含了五个彩蛋 且彩蛋对解题本身没有任何影响 快去发现吧 附件 Who am I z
  • 【数据结构】图文详解11道力扣链表OJ题

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 一 移除链表元素 二 反转链表 三 链表的中间节点 四 链表中倒
  • 【H5】 实现调用相机拍照功能

    H5 实现调用相机拍照功能 效果图如下 实现代码如下