【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】 实现调用相机拍照功能 的相关文章

  • Uncaught SyntaxError: Unexpected end of input

    Uncaught SyntaxError Unexpected end of input 最近做项目遇到这样一个问题Uncaught SyntaxError Unexpected end of input Unexpected end of
  • 企业网上下单订货管理软件源码搭建功能介绍

    网上下单订货管理软件源码搭建功能介绍 订货通订单管理系统APP 一 系统概述和用途 系统基于网络 实现厂家和代理商批发商通过网络下单订货功能 什么是订货通 什么是企业订货管理系统 是一款针对中小型企业通过网络实现 厂家和客户 经销商 批发商
  • 【H5】 svg动画 旋转属性与虚线属性

    svg 动画 旋转 transform rotate angle x y 不要写在style里面 angle 旋转角度 x y旋转中心 绘制虚线 stroke dasharray a b a b c d 旋转属性 transform rot
  • 第八站:JavaScript的数据类型、运算符、流程控制语句

    第八站 JavaScript的数据类型 运算符 流程控制语句 欢迎来到第八站 JavaScript的数据类型 运算符 流程控制语句 在这一站 我们将深入探索JavaScript中的核心概念 为你揭示这个语言的奇妙之处 准备好继续冒险了吗 让
  • 移动互联网终端的touch事件,touchstart, touchend, touchmove

    前言 如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP 这个页面上肯定是有很多可点击区域的 如果用户触摸到了那些可点击区域怎么办呢 诸如智能手机和平板电脑一类的移动设备通常会有一个电容式触摸屏 capacitive
  • 前端学习——JavaScript原生实现购物车案例

    一 购物车案例 1 1 案例介绍 今天我们来写另外一个购物车案例 说实话对于我来说这个是花了将近三个小时的时间然后才做出来的 里面可能还存在一些我没有发现的问题 但是能完成基本的功能 对于一些基本的需求都是可以完成的 下面照旧是案例实现的g
  • Vue组件按需引入时v-if和v-show的区别

    普通加载 在父组件中先import子组件 然后在components模块中注册子组件 在进 入页面时 会随着加载当前页面的js文件就加载子组件的内容 子组件的内容和父组件的内容在同一个js文件 按需加载 子组件显示的时候 才会去加载子组件的
  • HTML表格

    目录 实例 表格 表格和边框属性 表格的表头 表格中的空单元格 更多实例 表格标签 一个完整的实例 本例涉及到的资源 eg background jpg eg cute gif 可以使用 HTML 创建表格 实例 表格 这个例子演示如何在
  • vue+element-ui el-tabs切换面板el-tab-pane切换

    在vue项目中 el tabs在页面的右侧显示 切换面板 下面的内容是正常显示的 效果如下 代码如下 父组件
  • 网页引用Font Awesome图标

    方法一 demo html
  • JavaScript基础Day02:流程控制

    文章目录 1 顺序结构 2 分支结构 1 if语句 2 switch语句 3 循环结构 1 while语句 2 do while语句 3 for循环 1 顺序结构 2 分支结构 1 if语句 if 条件表达式 执行语句 if 条件表达式 成
  • JS有小数保留两位,整数不显示小数

    在很多时候要展示数据 会有各种小数处理 碰到页面的数据要根据不同的情况展示不同格式的数据 比如得到的数据是一个小数 现在要将小数保留两位 而整数则不显示小数点 显示整数格式 使用toFixed n 方法 toFixed 2 里面的2表示保留
  • css中float用法

    float浮动 指将指定元素悬浮于所在整体之上 即将垂直排列的元素转换为水平同行显示 平时写出的HTML是具有先后顺序的 对于这个顺序我们称之为标准流 而浮动则是脱离标准流的另一个独立标准 下面给出float定义 float left 左浮
  • HTML5游戏实战(2):90行代码实现捕鱼达人

    捕鱼达人是一款非常流行的游戏 几年里赚取了数以千万的收入 这里借用它来介绍一下用Gamebuilder CanTK开发游戏的方法 其实赚钱的游戏未必技术就很难 今天我们就仅用90来行代码来实现这个游戏 CanTK Canvas ToolKi
  • angular:路径找不到时会跳回主页

    本地起服时 如果输入的路径无法匹配现有规则 则会跳转至主页 带来一定困扰 最好是统一显示或者导航至特定页面 以便debug const routes Routes path component PageNotFoundComponent
  • BugkuCTF-WEB题文件上传

    启动场景 发现是文件上传 只能上传图像 不能上传PHP文件 那应该是寻找漏洞上传PHP文件 PHP文件里写入一句话木马 使用burp抓包 不断尝试发现发现需要修改的地方有三个 一个是http head里的Content Type multi
  • elementui 禁止浏览器自动填充用户名密码

    浏览器这功能在登录的时候挺好用的 但是在注册和管理的时候就很难受了 所以 在普通的input上直接off就行了
  • 移动端适配-01-百分比宽度

    1 图片可以在parent中使用 1 line heigh和text align使水平和竖直居中 2 在img标签中加vertical align middle 2 3 background size 1 两个参数 background s
  • localStorage和sessionStorage和Cookie的区别

    localStorage和sessionStorage和Cookie是前端开发中三种常见的临时存储客户端会话信息或者数据的方法 它们都存储在客户端中 区别 一 三者存储的有效时期不同 1 Cookie存储的有效时期可以设置 一般在浏览器关闭
  • 测试基础知识

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

随机推荐

  • 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 实现调用相机拍照功能 效果图如下 实现代码如下