H5调用手机摄像头和相册更换头像

参考大佬的案例做出的一些调整,更适合做app更换头像操作。
找了一天的资料,并作出的修改,呜呜呜!为了不让你们少走弯路,全都奉献出来。
大佬链接:https://blog.csdn.net/qq_27626333/article/details/51896616

如下图所示:

案例代码:
链接:https://pan.baidu.com/s/1XREYIDccUKJ4EVSNErMC4Q
提取码:51u8

主要的功能是更换头像,点击img 跳出两个选项,选择摄像头或者相册,然后选择图片,更换img 路径即可!逻辑很简单。

<body><div class="header"><input type="hidden" id="ckjl.id" name="ckjl.id" value="429">  <img class="messageimg" src="data:images/img/icon_message.png" /><img class="touxiang" id="touxiang" src="data:images/img/logo(2).png" onclick="showActionSheet(this)"/></div>   </body>

这里img点击事件:οnclick=“showActionSheet(this)”

var procinstid = 0;  //初始化页面执行操作  function plusReady() {  //Android返回键监听事件  plus.key.addEventListener('backbutton',function(){  myclose();  },false);  }  if (window.plus) {  plusReady();  } else {  document.addEventListener('plusready', plusReady, false);  }  //加载页面初始化需要加载的图片信息  //或者相册IMG_20160704_112620.jpg  //imgId:图片名称:1467602809090或者IMG_20160704_112620  //imgkey:字段例如:F_ZDDZZ  //ID:站点编号ID,例如429  //src:src="file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/upload/F_ZDDZZ-1467602809090.jpg"  function showImgDetail (imgId,imgkey,id,src) {    /* document.getElementsByTagName('touxiang')[0].className += 'yincang';var html = "";  html +='<div  id="Img'+imgId+imgkey+'" class="image-item ">';   html +='    <img id="picBig" data-preview-src="" data-preview-group="1" '+src+'/>';  html +='    <span class="del" οnclick="delImg(\''+imgId+'\',\''+imgkey+'\','+id+');">';         html +='        <div class="fa fa-times-circle"></div>';      html +='    </span>';   html +='</div>';$("#"+imgkey+"S").append(html);  */document.getElementById("touxiang").src=src }  //删除图片  //imgId:图片名称:IMG_20160704_112614  //imgkey:字段,例如F_ZDDZZ  //ID:站点编号ID,例如429  function delImg(imgId,imgkey,id){  var bts = ["是", "否"];  plus.nativeUI.confirm("是否删除图片?", function(e) {  var i = e.index;  if (i == 0) {  var itemname=id+"img-"+imgkey;//429img-F_ZDDZZ  var itemvalue=plus.storage.getItem(itemname);  //{IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg}  if(itemvalue!=null){  var index=itemvalue.indexOf(imgId+",");  if(index==-1){//没有找到  delImgfromint(imgId,imgkey,id,index);  }else{   delImgFromLocal(itemname,itemvalue,imgId,imgkey,index); //修改,加了一个index参数  }  }else{  delImgfromint(imgId,imgkey,id);   }  }  },"查勘", bts);  /*var isdel = confirm("是否删除图片?");  if(isdel == false){  return;  }*/  }  function delImgFromLocal(itemname,itemvalue,imgId,imgkey,index){  var wa = plus.nativeUI.showWaiting();  var left=itemvalue.substr(0,index-1);  var right=itemvalue.substring(index,itemvalue.length);  var end=right.indexOf("}");  right=right.substring(end+1,right.length);  var newitem=left+right;  plus.storage.setItem(itemname,newitem);   //myAlert("删除成功");  $("#Img"+imgId+imgkey).remove();  wa.close();  }  //选取图片的来源,拍照和相册  function showActionSheet(conf){  var divid = conf.id;  var actionbuttons=[{title:"拍照"},{title:"相册选取"}];  var actionstyle={title:"选择照片",cancel:"取消",buttons:actionbuttons};  plus.nativeUI.actionSheet(actionstyle, function(e){  if(e.index==1){  getImage(divid);  }else if(e.index==2){  galleryImg(divid);  }  } );  }  //相册选取图片  function galleryImg(divid) {  plus.gallery.pick( function(p){  //alert(p);//file:///storage/emulated/0/DCIM/Camera/IMG_20160704_112620.jpg  plus.io.resolveLocalFileSystemURL(p, function(entry) {  //alert(entry.toLocalURL());//file:///storage/emulated/0/DCIM/Camera/IMG_20160704_112620.jpg  //alert(entry.name);//IMG_20160704_112620.jpg  compressImage(entry.toLocalURL(),entry.name,divid);  }, function(e) {  plus.nativeUI.toast("读取拍照文件错误:" + e.message);  });  }, function ( e ) {  }, {  filename: "_doc/camera/",  filter:"image"  } );  }  // 拍照  function getImage(divid) {  var cmr = plus.camera.getCamera();  cmr.captureImage(function(p) {  //alert(p);//_doc/camera/1467602809090.jpg  plus.io.resolveLocalFileSystemURL(p, function(entry) {  //alert(entry.toLocalURL());//file:///storage/emulated/0/Android/data/io.dcloud...../doc/camera/1467602809090.jpg  //alert(entry.name);//1467602809090.jpg  compressImage(entry.toLocalURL(),entry.name,divid);  }, function(e) {  plus.nativeUI.toast("读取拍照文件错误:" + e.message);  });  }, function(e) {  }, {  filename: "_doc/camera/",  index: 1  });  }  //压缩图片  function compressImage(url,filename,divid){  var name="_doc/upload/"+divid+"-"+filename;//_doc/upload/F_ZDDZZ-1467602809090.jpg  plus.zip.compressImage({  src:url,//src: (String 类型 )压缩转换原始图片的路径  dst:name,//压缩转换目标图片的路径  quality:20,//quality: (Number 类型 )压缩图片的质量.取值范围为1-100  overwrite:true//overwrite: (Boolean 类型 )覆盖生成新文件  },  function(event) {   //uploadf(event.target,divid);  var path = name;//压缩转换目标图片的路径  //event.target获取压缩转换后的图片url路  //filename图片名称  saveimage(event.target,divid,filename,path);  },function(error) {  plus.nativeUI.toast("压缩图片失败,请稍候再试");  });  }  //保存信息到本地  /**  *   * @param {Object} url  图片的地址  * @param {Object} divid  字段的名称  * @param {Object} name   图片的名称  */  function saveimage(url,divid,name,path){  //alert(url);//file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg  //alert(path);//_doc/upload/F_ZDDZZ-1467602809090.jpg  var  state=0;  var wt = plus.nativeUI.showWaiting();  //  plus.storage.clear();   name=name.substring(0,name.indexOf("."));//图片名称:1467602809090  var id = document.getElementById("ckjl.id").value;  var itemname=id+"img-"+divid;//429img-F_ZDDZ  var itemvalue=plus.storage.getItem(itemname);  if(itemvalue==null){  itemvalue="{"+name+","+path+","+url+"}";//{IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg}  }else{    itemvalue=itemvalue+"{"+name+","+path+","+url+"}";  }  plus.storage.setItem(itemname, itemvalue);  //var src = 'src="'+url+'"';  var src = url;//alert("itemvalue="+itemvalue);  showImgDetail(name,divid,id,src);  wt.close();  }  //上传图片,实例中没有添加上传按钮  function uploadimge(agree,back) {  //plus.storage.clear();  var wa = plus.nativeUI.showWaiting();  var DkeyNames=[];  var id = document.getElementById("ckjl.id").value;   var length=id.toString().length;   var idnmae=id.toString();  var numKeys=plus.storage.getLength();  var task = plus.uploader.createUpload(getUrl() + 'url', {  method: "POST"  },  function(t, status) {  if (status == 200) {  console.log("上传成功");  $.ajax({  type: "post",  url: getUrl() + 'url',  data: {  taskId: taskId,  voteAgree: agree,  back: back,  voteContent: $("#assign").val(),  },  async: true,  dataType: "text",  success: function(data) {  wa.close();  goList(data);  },  error: function() {  wa.close();  myAlert("网络错误,提交审批失败,请稍候再试");  }  });  } else {  wa.close();  console.log("上传失败");   }  }  );  task.addData("id",id);  for(var i=0; i<imgArray.length;i++){    var itemkey=id+"img-"+imgArray[i];  if(plus.storage.getItem(itemkey)!=null){  var itemvalue=plus.storage.getItem(itemkey).split("{");  for(var img=1;img<itemvalue.length;img++){  var imgname=itemvalue[img].substr(0,itemvalue[img].indexOf(","));  var imgurl=itemvalue[img].substring(itemvalue[img].indexOf(",")+1,itemvalue[img].lastIndexOf(","));  task.addFile(imgurl,{key:imgurl});  }  }  }  task.start();  }

js代码如上:

代码逻辑:

首先触发点击事件(showActionSheet)---->然后选择 拍照(getImage)或选择相片(galleryImg)---->然后压缩图片,毕竟一张图片很大,需要压缩(compressImage)---->保存图片(saveimage)----->最后显示图片(showImgDetail).
逻辑还是很简单的。大家可以具体看一下案例,跑一下。

再次感谢https://blog.csdn.net/qq_27626333/article/details/51896616

H5调用手机摄像头和相册更换头像相关推荐

  1. H5调用手机摄像头拍照,如何压缩后上传

    H5调用手机摄像头拍照后,怎样压缩再上传? 实际的压缩功能,就是利用canvas画布功能,将图片进行裁剪后保存图片的base64数据流,然后上传. 案例全部代码,示下: <!DOCTYPE ht ...

  2. H5调用手机摄像头,实时拍照上传(旧)

    H5调用手机摄像头,完成拍照,实时上传(旧) 项目开发中,偶尔会遇到网页中调用手机摄像头,通过相册选择或直接实时拍照的方式,完成图片上传的功能型需求. 今天,就通过一个小的案例,演示一下完整的实现流程 ...

  3. h5调用手机摄像头获取图片用于人脸识别

    h5调用手机摄像头获取图片用于人脸识别 1.安卓手机获取前置摄像头,并在video标签显示 注:navigator.mediaDevices.getUserMedia文档说明兼容Safari11,实测 ...

  4. 使用HTML5+调用手机摄像头和相册

    前言: 前端时间使用HTML5做了一个WEB端APP,其中用到了H5页面调用手机摄像头的功能,当时也是花了不少时间去研究.最终是采用了HTML5plus(HTML5+)的方式完成了该功能,现将具体方法 ...

  5. html调起苹果手机摄像头_使用HTML5+调用手机摄像头和相册

    前言: 前端时间使用HTML5作了一个WEB端APP,其中用到了H5页面调用手机摄像头的功能,当时也是花了很多时间去研究.最终是采用了HTML5plus(HTML5+)的方式完成了该功能,现将具体方法 ...

  6. 使用JS调用手机摄像头和相册

    Html <h2 class="title-detail">图片描述</h2> <input type="hidden" id=& ...

  7. 安卓调用手机摄像头和相册

    文章目录 调用摄像头和相册 调用摄像头进行拍照 从相册当中选取图片 调用摄像头和相册 调用摄像头进行拍照 新建一个CameraAlbumTest项目,修改activity_main.xml中的代码 & ...

  8. html5调用手机摄像头和相册,h5 调用手机摄像头/相册

    html 部分 js 部分 getBase64: function (file, callback) { var maxWidth = 640 if (file.files && fi ...

  9. h5调用手机摄像头/相册

    <!DOCTYPE HTML><html><head> <title>上传图片</title> <meta charset=" ...

  10. H5调用手机摄像头,图片,视频等

    限制只能选择图片 <input type="file" accept="image/*"> 限制只能选择视频 <input type=&quo ...

最新文章

  1. 使用OpenCV,Python和dlib进行眨眼检测及计数
  2. apache关于记录真实客户端ip和不记录健康检查日志
  3. SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600
  4. Android-静态代理模式
  5. 3.cocos2dx它Menu,由menu为了实现场景切换
  6. offset系列,client系列,scroll系列回顾
  7. 嵌入式Linux系统的构成和启动总结
  8. tcp连接python_python网络编程--TCP连接的三次握手(三报文握手)与四次挥手
  9. 问题记录:模组屏调试点亮
  10. 上位机和下位机计算机联锁,上位机下位机各是什么意思?上位机下位机介绍
  11. 机器人也会骑车?日本村田顽童来京秀车技
  12. 中山一院:华南第一综合性三甲医院的 IT 基础架构转型实践
  13. JAVA - 银行卡认证
  14. orcad 16.6 关闭startpage
  15. ugp和千幻魔镜买哪个好_2020年买VR盒子十大品牌推荐 VR手机盒子如何使用
  16. 淘气的小丁-Ajax
  17. 俄罗斯最大的盗版资源网站,解封了!
  18. JAVA中获取文件MD5值的四种方法
  19. 2021上半年,计算机考研大学热搜排名!
  20. ANSYS中表格数组的定义及使用举例

热门文章

  1. 初学java网络编程的一些总结
  2. 斐讯路由器K2弹广告-刷机过程
  3. TX4223芯鼎盛PWM开关型DC-DC转换驱动器DCDC升压恒压芯片开关电源IC
  4. 西瓜书(机器学习周志华)公式详细推导
  5. python能用于机械设计吗_为什么人工智能首选Python?因为有很多适用于ML和DL的Python库!...
  6. Python 实现导入三份EXCEL表自动生成每周的考核周报WORD文档
  7. UI自动化 win32 模拟键盘按键
  8. tomcat集群(小型项目)
  9. 移动app性能测试工具:Emmagee使用介绍
  10. ShuffleNet神经网络