pc 和手机调用摄像头拍照 获取照片 好用

news/2024/12/23 0:13:17/

前端何如在代码中使用摄像头拍照功能

demo 部署服务器可以测试

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><inputtype="file"accept="video"capture="user"ref="videoFile"@change="changeVideo"class="file-input"
/></body></html>
<script>function changeVideo (e) {// 获取到input标签的上传的文件对象const files = e.files[0];console.log(files)// 通过FileReader构造函数创建一个新的FileReader对象let reader = new FileReader();// 通过新创建的FileReader对象获取input元素上传的files文件对象,并使用readAsDataURL()方法读取reader.readAsDataURL(file);// 这是一个异步操作,当读取完成后,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容reader.onload = () => {// 输出文件base64console.log(reader.result)}
}</script>

解答疑惑

input type=“file“属性详解,利用capture调用手机摄像头

上传文件类型
当需要限制上传文件的类型时,就需要使用input标签的accept属性;accept属性:规定通过文件上传来提交的文件的类型。 (只针对type=“file”)

accept属性值值描述
audio/*接受所有的声音文件
video/*接受所有的视频文件
image/*接受所有的图像文件
MIME_type一个有效的 MIME 类型,不带参数

调用摄像头或麦克风
capture属性:用于调用设备的摄像头或麦克风
当accept="image/"或accept="video/"时:

capture属性值描述
user手机前置摄像头
environment手机后置摄像头

当accept="audio"时:只调用麦克风设备,capture属性值可以为任意值

当input没有capture属性时,根据accppt类型给出文件夹选项以及摄像头或者录音机选项

input含有multiple属性时访问文件夹可勾选多文件,调用系统摄像头或者录音机都只是单文件,无multiple时都只能单文件

使用前置摄像头录制视频,并获取视频base64

HTML部分

<!-- 当input的值发生改变时,触发change事件,调用changeVideo函数 -->
<inputtype="file"accept="video/*"capture="user"ref="videoFile"@change="changeVideo"class="file-input"hidden
/>

js部分

changeVideo () {// 获取到input标签的上传的文件对象const files = this.$refs.videoFile.files;// 通过FileReader构造函数创建一个新的FileReader对象let reader = new FileReader();// 通过新创建的FileReader对象获取input元素上传的files文件对象,并使用readAsDataURL()方法读取reader.readAsDataURL(file);// 这是一个异步操作,当读取完成后,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容reader.onload = () => {// 输出文件base64console.log(reader.result)}
}

FileReader的部分实例方法
1.readAsArrayBuffer():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含一个ArrayBuffer对象以表示所读取文件的数据。
2.readAsBinaryString():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含所读取文件原始二进制格式。
3.readAsDataURL():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容。
以上三个方法参数均为即将被读取的Blob或File对象

也可以参考博友文章


http://www.ppmy.cn/news/22628.html

相关文章

工民建专业职称申报条件

工民建砖业&#xff0c;是工业与民用建筑砖业&#xff0c;是中等职业学校砖业目录的一门土建施工类砖业&#xff0c;主要在中砖以及开设中砖砖业的学校开设。工业与民用建筑主要为建筑施工企业、安装单位、设计单位、业主、监理等单位及各及管理部门培养从事施工及术、工程项目…

透彻解析VS联合Qt贪吃蛇游戏(界面用代码实现)

1、项目目的&#xff1a; 本项目主要通过编写贪吃蛇游戏来学习&#xff0c;熟悉Qt中封装的类&#xff0c;以及Qt Desginer的使用&#xff0c;所以本篇博客会用代码写界面完成贪吃蛇的设计&#xff0c;以此来熟悉Qt中封装的类&#xff0c;然后在另一篇博客利用Qt Desginer来设计…

freertos学习之路3-freertos的任务调度

写在最前 由于工作需要&#xff0c;需要开始学习freertos的相关知识&#xff0c;本专题主要记录freertos的相关内容 参考&#xff1a; https://www.bilibili.com/video/BV19g411p7UT 正点原子视频 1. 任务调度状态 1.1 四种调度状态 如上图&#xff0c;freertos总共有4种状态 …

【JavaScript速成之路】JavaScript数据类型

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;变量的数据类型1.1&#xff0c;强类型语言1.2&#xff0c;弱类…

阿尔茨海默氏症救星!经典+量子混合方法加速药物发现

&#xff08;图片来源&#xff1a;网络&#xff09;本月&#xff0c;阿尔茨海默氏症的世界被lecanemab震撼了&#xff0c;lecanemab是由美国生物技术公司Biogen与日本制药公司Eisai合作开发的治疗方法。研究表明&#xff0c;对于那些还在困扰着人类的疾病&#xff0c;量子设备将…

AVL树.

目录 一. 概念 二. 节点的定义 三. 基础框架 四. 插入 1.左旋 2.右旋 3.右左旋 4.左右旋 5.总览 五. 验证 一. 概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中…

凡人修C传——专栏从凡人到成仙系列目录

这里先感谢博主THUNDER王给我提出来的一个创作建议&#xff0c;让我有了创作的灵感来创建这一篇博客以及凡人修C传这一个系列的文章。 本文最主要的目的就是给大家一个凡人修C传的一个目录&#xff0c;让大家更加容易学到自己想学的地方。 &#x1f4dd;【个人主页】&#xff1…

STM32开发(4)----系统启动流程

系统启动流程前言一、系统启动方式二、启动汇编文件分析1. 初始化堆栈指针2. 初始化中断向量表3. 在Reset_Handler中调用 SystemInit4.进入main函数前&#xff0c;初始化用户堆栈总结前言 本章介绍STM32系统启动流程的相关内容&#xff0c;包括对系统启动方式&#xff0c;启动…