首页

文章

html5或者JS怎样调用手机摄像头或者相册?

发布网友 发布时间:2022-04-19 10:01

我来回答

1个回答

热心网友 时间:2023-08-26 11:14


这篇文章主要介绍了H5调用相机拍照并压缩图片的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
整理文档,搜刮出一个H5调用相机拍照并压缩图片的实例代码,稍微整理精简一下做下分享。
背景
最近要做一个h5的页面,主要功能就是调用相机拍照或者是相册选图并且把照片压缩转base64之后上传到后台服务器,然后服务器返回识别结果。
前端的主要功能点有:
H5如何调用相机
图片如何压缩
图片转base64
H5调用相机/相册
调用相机最简单的方法就是使用input file[camera]属性:


<input type="file" capture=camera accept="image/*">//相机
<input type="file" accept="image/*">//相册这个种方法兼容性还是有问题的,在iphone手机上可以正常打开相机,但是在安卓手机上点击之后是相机、图库、文件管理器等混合选择项。在网上搜了很多都没有什么好的解决办法,只能继续往下写了。。
图片压缩
图片压缩就要用到FileReader和<canvas>了。
FileReader对象允许Web应用程序异步读取存储在计算机上的文件的内容,使用File或Blob对象指定要读取的文件或数据。
<canvas>是一个可以使用脚本在其中绘制图形的HTML元素,可以绘制图形和简单的动画。
图片压缩要压缩图片的分辨率和质量,分辨率压缩我这里是设置了图片的最大边为800,另一边按照图片原有比例缩放,也可以设置图片整体的缩放比例。


然后就是压缩图片的质量了,这里设置压缩了80%,如果设置太小图片就失真了。动态创建<canvas>标签然后压缩图片:


然后就是上传到服务器并展示服务器的结果啦,然而事情并没有那么顺利。。ios手机拍照压缩之后图片莫名的旋转了,继续解决问题。
解决IOS图片旋转
首先引用exif.js,通过EXIF.getData和EXIF.getTag获取拍照方向信息。


下面给出每个orientation值对应到iphone手机拍照的含义:
orientation描述3iphone横屏拍摄,此时home键在左侧,图片相对于原始位置旋转了180度6iphone竖屏拍摄,此时home键在下方(正常拿手机的方向),图片相对于原始位置逆时针旋转可90度8iphone竖屏拍摄,此时home键在上方,图片相对于原始位置顺时针旋转了90度获取图片的方向信息之后,根据获取到的值作相应的旋转操作。


switch (orientation) {
case 6:
case 8:
cvs.width = height;
cvs.height = width;
break;
}
var context=cvs.getContext("2d");
switch(orientation){
//iphone横屏拍摄,此时home键在左侧
case 3:
// 180度向左旋转
context.translate(width, height);
context.rotate(Math.PI);
break;
//iphone竖屏拍摄,此时home键在下方(正常拿手机的方向)
case 6:
context.rotate(0.5 * Math.PI);
context.translate(0, -height);
break;
//iphone竖屏拍摄,此时home键在上方
case 8:
// 逆时针旋转90度
context.rotate(-0.5 * Math.PI);
context.translate(-width, 0);
break;
}然后再上传图片,发现在IOS下图片已经正常了。
下面给出完整代码:

ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 我弱弱想问下台湾人也用微信吗 行车记录仪什么牌子性价比高 智能手环专利技术有哪些 行车记录仪是干什么的,有什么作用呢? 安防-监控系统什么品牌好? 如何用手机控制自家的摄像头 GoPro是否支持GB/T28181协议 willgoAPP能监控我在家的活动吗 GOE丫E是什么监控 gopro 相机如何通过wifi连手机做监视器?求攻略?谢谢 gopro可以连接监视器吗 DJI GO 和DJI GO 4 有什么区别 如何监控 golang 程序的垃圾回收 gopro可以直接连接电视当监控器吗 如何用go语言抓取网络摄像头数据 用go语言编写的程序会被谷歌监控到吗? go桌面有网络流量监控么 GO系列里有没有流量监控的 gopro可以远程监控嘛 go如何监控内存和CPU使用率 404 Not Found 如何利用selenium 录制脚本 网站调用摄像头实现视频功能代码谁有? HTML5从入门到精通的内容介绍 principle 怎么删除关键帧 lv钱包 编号在哪 台湾的朋友用微信吗?知道的或台湾的回答下 平面设计专业实训报告三篇 studio是什么意思 Android 开发游戏前都要会什么 ? 有没有遇到过各个版本之间android api接口的区别 404 Not Found 大学英语四级常用单词表 基于android系统的手机游戏的开发 安卓手机,大家都是哪个平台下的游戏 准备给弟弟下几个单机小游戏,给个建议 在Android开发中,如何根据配置文件加载Activity? 推荐好看的日本动画片~! 为什么我老是在游戏里被弹出来,然后现很多英文 台台北用微信联系内地会被禁号吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com