H5调用相机和相册更换头像
需求:H5调用手机的相机和相册从而实现更换头像的功能
这个功能是很常用的一个功能,因此做一个记录。
1.在头像img下加一个文件输入框
<input type="file" id="file" accept="image/*" capture='camera' multiple>
并隐藏之
<center>
<img src="data:images/Bitmap@2x.png" class="avatar">
<input type="file" id="file" accept="image/*" capture='camera' multiple>
</center>
#file {
display: none;
}
2.点击头像触发文件输入框点击事件
$(".avatar").click(function(){
$("#file").trigger("click")
})
3.给ios去掉capture属性,这样iphone才能调用相册。这段代码可以提取到公共js里复用。
var file = document.querySelector('input');
if (getIos()&&file) {
file.removeAttribute("capture");
}
function getIos() {
var ua=navigator.userAgent.toLowerCase();
if (ua.match(/iPhone\sOS/i) == "iphone os") {
return true;
} else {
return false;
}
}
4.通过js拿到上传的文件内容,转成base64编码并显示图片在页面上
//转成base64
$('input[type=file]').on('change', function () {
var reader = new FileReader();
reader.onload = function (e) {
console.log(reader.result); //或者e.target.result都是一样的,都是base64码
$(".avatar").attr("src", reader.result);
}
reader.readAsDataURL(this.files[0])
//filses就是input[type=file]文件列表,files[0]就是第一个文件,这里就是将选择的第一个图片文件转化为base64的码
})
5.实现效果页面展示
更换头像前的效果:

更换头像后的效果:

附:获取File对象的方式为
frontFile = $('#file')[].files[]
console.log(frontFile)
控制台输出为:

我们可以通过封装File对象到FormData,与上传图片接口对接,如:
let formData
formData = new FormData()
formData.append('mFile',frontFile)
H5调用相机和相册更换头像的更多相关文章
- 一、H5(移动端)前端使用input type=file 上传图片,调用相机和相册
一.H5(移动端)前端使用input type=file 上传图片,调用相机和相册
- swift调用相机和相册
简单实现swift调用相机和相册的功能,分享代码与学习swift的童鞋共同进步 import UIKit class ViewController: UIViewController,UIImageP ...
- 转:HTML5页面如何在手机端浏览器调用相机、相册功能
HTML5页面如何在手机端浏览器调用相机.相册功能 开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file&q ...
- HTML5页面如何在手机端浏览器调用相机、相册功能
最近在做一个公司的保险信息处理系统项目,开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file"/& ...
- Android 调用相机、相册功能
清单文件中增加对应权限,动态申请权限(此部分请参考Android 动态申请权限,在此不作为重点描述) private static final int REQUEST_CODE_ALBUM = 100 ...
- Android开发在Activity外申请权限调用相机打开相册
问题描述: 最近在项目中遇到一个需要调用相册和打开相机的需求,但是,在Android 6.0以后,调用相册属于危险权限,需要开发者动态获取,这就意味着我们申请权限是与Activity绑定的,但如果一个 ...
- IOS调用相机和相册时无法显示中文
调用系统相册.相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文 需要在info.plist做如下设置 info.plist里面添加 Localizedresourc ...
- iOS通过UIAlertController弹出底部选择框来调用相机或者相册
UIAlertController *alertVc = [UIAlertController alertControllerWithTitle:nil message:nil preferredSt ...
- h5调用手机摄像头/相册
<!DOCTYPE HTML><html><head> <title>上传图片</title> <meta charset=" ...
随机推荐
- css常用语法续集
1 设置字体 body{font-familly:“宋体”} 2 可以使用下面代码设置网页中文字的字号为12像素,并把字体颜色设置为#666(灰色): body{font-size:12px;c ...
- spring autowrited注解
@Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法.在使用@Autowired之前,我们对一个b ...
- 原生应用使用cordova并与h5应用分离
个人原创地址:https://www.jianshu.com/p/1ad536e76640 1.需求与使用场景 打开一个新页面,要求能够加载本地zip格式的h5应用,该应用使用了某些原生能力:能够 ...
- git和githup
一:Git简介 1.1:VCS的历史 Git是一款代码管理工具(Version Control System),傲视群雄,是目前世界上最先进的免费开源的分布式版本控制系统,没有之一! VCS版本控制系 ...
- 一文了解:Redis基础类型
Redis基础类型 Redis特点 开源的,BSD许可高级的key-value存储系统 可以用来存储字符串,哈希结构,链表,集合 安装 windows:https://github.com/micro ...
- Redhat 离线安装 Docker (Community from binaries)
需求 在离线环境安装Docker (Community版),因为Enterprise版要花钱.当然资金充裕的客户可参考https://docs.docker.com/install/linux/doc ...
- 禅道、jenkins部署记录
禅道部署1.检查你linux系统的位数(uname -a)2.下载对应位数的禅道包3.通过xftp工具将禅道包拷贝到虚拟机的/opt目录4.tar 对禅道包进行解压5.改配置:vi /opt/zbox ...
- Java——擦除
直接代码分析一波: import java.util.*; public class Ex12 { public static void main(String[] args) { Class c1 ...
- 带你剖析WebGis的世界奥秘----Geojson数据加载(高级)
前言:前两周我带你们分析了WebGis中关键步骤瓦片加载+点击事件(具体的看前两篇文章),下面呢,我带大家来看看Geojson的加载及其点击事件 Geojson数据解析 GeoJSON是一种对各种地理 ...
- java io读取性能对比
背景 从最早bio的只支持阻塞的bio(同步阻塞) 到默认阻塞支持非阻塞nio(同步非阻塞+同步阻塞)(此时加入mmap类) 再到aio(异步非阻塞) 虽然这些api改变了调用模式,但真正执行效率上是 ...