第一种是HTML方法

 

  1.  <label>
  2.  
  3.     <input style="opacity: 0;" type="file" accept="image/*" id="head_img_change"/>
  4.  
  5.     <img id="headimg" src="img/erma_search_goods_detail.png">
  6.  
  7.   </label>  
  1. $(function(){
  2.  
  3.     $("#head_img_change").change(function() {
  4.       var $file = $(this);
  5.       var fileObj = $file[0];
  6.       var windowURL = window.URL || window.webkitURL;
  7.       var dataURL;
  8.       var $img = $("#headimg");
  9.       if(fileObj && fileObj.files && fileObj.files[0]){
  10.         dataURL = windowURL.createObjectURL(fileObj.files[0]);
  11.         $img.attr('src',dataURL);
  12.       }else{
  13.         dataURL = $file.val();
  14.         var imgObj = document.getElementById("headimg");
  15.         // 1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性再加入,无效;
  16.         // 2、src属性需要像下面的方式添加,上面的两种方式添加,无效;
  17.         imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
  18.         imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;
  19.       }
  20.     });
  21.  
  22.   })

  说明:1)外部加个label是为了把让用户点击的时候在范围内的都会触发input

       2)H5  input file上传图片,调用API:<input type="file" accept="image/*;capture=camera">直接调用相机
                       <input type="file" accept="image/*" />调用相机、图片或者相册

       注:部分android机只能调用本地相册,相机调用不了或者只能调用相机,不能调用相册。

       3)此方法是网上的一种方法,做了兼容的,IE6以上都能正常运行。

第二种为MUI方法

 1)内容链接:http://www.bcty365.com/content-146-3648-1.html

 2)需要改一下  点击头像触发   里的

  拍照触发的对象的ID名改成自己的就行了。

  还需要修改一下   上传图片  里的一点代码就可以用了:

  var mainImage= document.getElementById("headimg");

  mainImage.src = imgPath;

    说明这一部分改成上面的那两句就可以了,因为我原来放图片的地方设置有宽高,mainImage给它一个装图片的对象就行了。

  1. //拍照触发监听
  2. document.getElementById("changeimg").addEventListener("tap", function() {
  3. if (mui.os.plus) {
  4.  
  5. var a = [
  6. { title: "拍照" },
  7. { title: "从手机相册选择" }
  8. ]
  9.  
  10. plus.nativeUI.actionSheet({
  11. title: "修改用户头像",
  12. cancel: "取消",
  13. buttons: a
  14. }, function(b) { //actionsheet 点击之后出现的东西
  15. switch (b.index) {
  16. case 0:
  17. break;
  18. case 1:
  19. getpic();
  20. break;
  21. case 2:
  22. getimg();
  23. break;
  24. default:
  25. break;
  26. }
  27. })
  28. }
  29. })
  30. //拍照
  31. function getpic() {
  32. var c = plus.camera.getCamera();
  33. c.captrueImage(function(e) {
  34. plus.io.resolveLocalFileSystemURL(e, function(entry) {
  35. var s = entry.toLocalURL() + "?version=" + new Date().getTime();
  36. uploadHead(s); //上传图片
  37. }, function(e) {
  38. console.log("读取拍照文件错误" + e.message)
  39. })
  40. }, function(s) {
  41. console.log("error" + s);
  42. }, {
  43. filname: "_doc/head.png"
  44. })
  45. }
  46.  
  47. //获取相册
  48. function getimg() {
  49. plus.gallery.pick(function(a) {
  50. plus.io.resolveLocalFileSystemURL(a, function(entry) {
  51. plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
  52. root.getFile("head.png", {}, function(file) {
  53. //文件已存在
  54. file.remove(function() {
  55. console.log("删除成功");
  56. entry.copyTo(root, "head.png", function(e) {
  57. var e = e.fullPath + "?version=" + new Date().getTime();
  58. uploadHead(e); /*上传图片*/
  59. //变更大的图预览的src
  60. //目前只有一张图暂且这样处理,后续需要用标准组件实现
  61. }, function(e) {
  62. console.log("copy img file:" + e.message);
  63. });
  64. }, function() {
  65. console.log("删除" + e.message)
  66. });
  67. }, function() {
  68. //文件不存在
  69. entry.copyTo(root, "head.png", function(e) {
  70. var path = e.fullPath + "?version=" + new Date().getTime();
  71. uploadhead(path); /*上传图片*/
  72. }, function(e) {
  73. console.log("copy img file:" + e.message);
  74. });
  75. });
  76. }, function(e) {
  77. console.log("get _www folder fail");
  78. })
  79. }, function(e) {
  80. console.log("读取拍照文件错误" + e.message);
  81. })
  82. }, function(a) {}, {
  83. filter: "image"
  84. })
  85. }
  86. //上传头像图片
  87. function uploadHead(imgPath) {
  88. var mainImage = document.getElementById("headimg");
  89. mainImage.src = imgPath;
  90.  
  91. var image = new Image();
  92. image.src = imgPath;
  93. image.onload = function() {
  94. var imgData = getBase64Image(image);
  95.  
  96. $.ajax({
  97. type: "post",
  98. data: imgData,
  99. url: "http://10.8.165.31/ceshi/reuserimg.php",
  100. success: function(data) {
  101. console.log("ajax成功")
  102. console.log(data);
  103. },
  104. error: function() {
  105. console.log("ajax失败")
  106. }
  107. });
  108. }
  109. }
  110.  
  111. //转换64
  112. function getBase64Image(img) {
  113. var canvas = document.createDocument("canvas");
  114. var width = img.width;
  115. var height = img.height;
  116.  
  117. if (width > height) {
  118. if (width > 100) {
  119. height = Math.round(height *= 100 / width);
  120. width = 100;
  121. }
  122. } else {
  123. if (height > 100) {
  124. width = Math.round(width *= 100 / height);
  125. height = 100;
  126. }
  127. }
  128.  
  129. canvas.width = width;
  130. canvas.height = height;
  131.  
  132. var ctx = canvas.getContext("2d");
  133. ctx.drawImage(img, 0, 0, width, height); /*绘图*/
  134. var dataURL = canvas.toDataURL("image/png", 0.8);
  135. return dataURL.replace("data:image/png;base64,", "");
  136.  
  137. }

MUI如何调取相册的方法的更多相关文章

  1. mui H5+ 调取 相册 拍照 功能 上传图片 + 裁剪功能

    H5+ 相册拍照图片上传 点击用户头像后,弹出actionSheet,选择从相册或是拍照:选取照片后调用上传方法: 上传图片后调用PhotoClip.js  插件进行裁剪 具体流程 弹出actionS ...

  2. mui + H5 调取摄像头和相册 实现图片上传

    最近要用MUI做项目,在研究图片上传时 ,遇到了大坑 ,网上搜集各种资料,最终写了一个demo,直接看代码.参考(http://www.cnblogs.com/richerdyoung/p/66123 ...

  3. 转:ecshop商品分类页获取相册列表方法

    ecshop商品分类页获取相册列表方法 很久之前就看到过你好在商品列表页有获取到相册列表,但是一直没有实践过,感觉应该挺简单的吧,但是最近手上的项目刚好就需要这个功能,然后就想到网上查下资料,至少找个 ...

  4. iOS9中将图片保存到照片中的某个相册的方法说明

    iOS9中将图片保存到照片中的某个相册的方法说明 在App中很经常遇到的就是用户点击某张图片后将图片保存到本地,下面介绍下iOS中保存图片的一些东西 1.首先,在iOS中把图片保存到系统照片是比较简单 ...

  5. MUI上传文件的方法

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Android 调用系统相机拍照保存以及调用系统相册的方法

    系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new ...

  7. mui调用本地相册调用相机上传照片

    调用mui的常用库和jquery html部分: <header class="mui-bar mui-bar-nav"> <a class="mui- ...

  8. ecshop商品分类页获取相册列表方法

    第1步:找到根目录的category.php文件,查找约:486行左右(注意这不是准确位置,看实际的哦),找到这个函数: /** * 获得分类下的商品 * * @access public * @pa ...

  9. mui 重写back 调用back方法,实现返回就即时刷新页面

    需求: 从A-----b页面  B操作完后再返回A ,这时A页面数据变化 1.先是针对安卓机可以点击按钮返回,也可以用本机的返回键返回 监听本机的返回按钮,如果点击就调用写好的自定义刷新事件 (fun ...

随机推荐

  1. Javacript的变量和输出

    一.js使用的三种方式 1.在HTML标签中,直接内嵌js(并不提倡使用): >>不符合W3C内容与表现分离的要求!!! 2.在HTML页面中使用<script></sc ...

  2. Android studio 使用问题汇总

    使用android studio也有一段时间了,汇总了一下这段时间内遇到一些常见问题 一.字体大小问题 在android studio的使用过程中没有发现类似于Eclipse中的font选项,调节字体 ...

  3. 运维之Linux基础(二)

    运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...

  4. java源文件中是否必须要有一个public类?

    java源文件中不必有一个public类,如果没有public类的话,那么文件名可以是任意合法名称,且编译完成之后如果该源文件中有多个独立的类,则会生成多个对应的.class文件.

  5. Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data

    static string GetLotteryByPhase(string phaseNo) { // Set the url and charset string url = "http ...

  6. spring学习笔记1

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAATQAAAEBCAIAAAB5VM7WAAAgAElEQVR4nOy9Z3gc13n3zZT3efPESZ

  7. 两个大数相乘-Java

    两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示.例如S1="7832974972840919321747983209327",S2="19 ...

  8. 公司python入职培训流程

     时间分为4周,全部自学,仅提供大纲.适用于Web方向:1.Week1:读完<简明Python教程>,适应Python开发环境2.Week2:写个爬虫,需要深入了解re.urllib2.s ...

  9. 我的Markdown的利器——Markdown Here、有道云笔记、iPic

    Markdown逐渐成为大家文章编辑的首选,这里推荐两个比较冷门的Markdown工具. 用什么当做Markdown的主力工具? 网上有很多人推荐的Markdown的工具包括专业的Markdown工具 ...

  10. UI设计基础知识和JavaScript

    [PS基础案例] 人物修图.调整画布大小,建立3个图层,并列放到画布中,用修补工具修掉中间的人物,再用橡皮章盖掉边缘的人物,然后扣出人物,放上新的蓝天,用橡皮擦调整透明度,擦掉水天交接的地方,然后调整 ...