第一种是HTML方法

 

 <label>

    <input style="opacity: 0;" type="file" accept="image/*" id="head_img_change"/>

    <img id="headimg" src="img/erma_search_goods_detail.png">

  </label>  
 $(function(){

     $("#head_img_change").change(function() {
      var $file = $(this);
      var fileObj = $file[0];
      var windowURL = window.URL || window.webkitURL;
      var dataURL;
      var $img = $("#headimg");
      if(fileObj && fileObj.files && fileObj.files[0]){
        dataURL = windowURL.createObjectURL(fileObj.files[0]);
        $img.attr('src',dataURL);
      }else{
        dataURL = $file.val();
        var imgObj = document.getElementById("headimg");
        // 1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性再加入,无效;
        // 2、src属性需要像下面的方式添加,上面的两种方式添加,无效;
        imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
        imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;
      }
    });   })

  说明: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给它一个装图片的对象就行了。

 //拍照触发监听
document.getElementById("changeimg").addEventListener("tap", function() {
if (mui.os.plus) { var a = [
{ title: "拍照" },
{ title: "从手机相册选择" }
] plus.nativeUI.actionSheet({
title: "修改用户头像",
cancel: "取消",
buttons: a
}, function(b) { //actionsheet 点击之后出现的东西
switch (b.index) {
case 0:
break;
case 1:
getpic();
break;
case 2:
getimg();
break;
default:
break;
}
})
}
})
//拍照
function getpic() {
var c = plus.camera.getCamera();
c.captrueImage(function(e) {
plus.io.resolveLocalFileSystemURL(e, function(entry) {
var s = entry.toLocalURL() + "?version=" + new Date().getTime();
uploadHead(s); //上传图片
}, function(e) {
console.log("读取拍照文件错误" + e.message)
})
}, function(s) {
console.log("error" + s);
}, {
filname: "_doc/head.png"
})
} //获取相册
function getimg() {
plus.gallery.pick(function(a) {
plus.io.resolveLocalFileSystemURL(a, function(entry) {
plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
root.getFile("head.png", {}, function(file) {
//文件已存在
file.remove(function() {
console.log("删除成功");
entry.copyTo(root, "head.png", function(e) {
var e = e.fullPath + "?version=" + new Date().getTime();
uploadHead(e); /*上传图片*/
//变更大的图预览的src
//目前只有一张图暂且这样处理,后续需要用标准组件实现
}, function(e) {
console.log("copy img file:" + e.message);
});
}, function() {
console.log("删除" + e.message)
});
}, function() {
//文件不存在
entry.copyTo(root, "head.png", function(e) {
var path = e.fullPath + "?version=" + new Date().getTime();
uploadhead(path); /*上传图片*/
}, function(e) {
console.log("copy img file:" + e.message);
});
});
}, function(e) {
console.log("get _www folder fail");
})
}, function(e) {
console.log("读取拍照文件错误" + e.message);
})
}, function(a) {}, {
filter: "image"
})
}
//上传头像图片
function uploadHead(imgPath) {
var mainImage = document.getElementById("headimg");
mainImage.src = imgPath; var image = new Image();
image.src = imgPath;
image.onload = function() {
var imgData = getBase64Image(image); $.ajax({
type: "post",
data: imgData,
url: "http://10.8.165.31/ceshi/reuserimg.php",
success: function(data) {
console.log("ajax成功")
console.log(data);
},
error: function() {
console.log("ajax失败")
}
});
}
} //转换64
function getBase64Image(img) {
var canvas = document.createDocument("canvas");
var width = img.width;
var height = img.height; if (width > height) {
if (width > 100) {
height = Math.round(height *= 100 / width);
width = 100;
}
} else {
if (height > 100) {
width = Math.round(width *= 100 / height);
height = 100;
}
} canvas.width = width;
canvas.height = height; var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height); /*绘图*/
var dataURL = canvas.toDataURL("image/png", 0.8);
return dataURL.replace("data:image/png;base64,", ""); }

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. Python 第八天

    文章读写 读写文章是最常见的 IO 操作. 读 1.Python 中内置了open()函数,read()方法以及close()方法来打开文件 fi = open('test.html','r') co ...

  2. testng相关的Annotation注释方法,

    2 - Annotation这里是TestNG中用到的annotation的快速预览,还有它们的属性. @BeforeSuite: 被注释的方法将在所有测试运行前运行,方法将只运行一次@AfterSu ...

  3. iOS Notification – 远程通知

    本文讲解iOS的远程通知的基本使用,主要包括远程通知的类型,处理远程通知的场景,以及远程通知相关证书的配置等等. 一.APNs简介 APNs是苹果公司提供的远程通知的服务器,当App处于后台或者没有运 ...

  4. 神经网络与深度学习笔记 Chapter 1.

    转载请注明出处:http://www.cnblogs.com/zhangcaiwang/p/6875533.html sigmoid neuron 微小的输入变化导致微小的输出变化,这种特性将会使得学 ...

  5. 菜鸟的Xamarin.Forms前行之路——按钮的按下抬起事件的监控(可扩展至其他事件)

    提问:监控按钮的点击事件,可以通过按钮的Click事件,或者Command绑定,那么如何监控按钮的按下与抬起,或者移动,长按,双击等事件? 解决方法:各个平台自定义渲染依赖注入. 共享项目PCL: 1 ...

  6. Mybatis分页插件PageHelper正确的使用方法(网上有2篇不够科学的文章)

    今天下午在Mybatis项目中,实现分页.因为我是后加入项目中的,Leader用的是PageHelper这个组件,但是我在实际使用的过程中遇到了2个大问题. 1.http://www.oschina. ...

  7. Java温故而知新-杨辉三角形

    Java温故而知新-杨辉三角形 一. 先说需求 需求 打印输出杨辉三角形,行数可变,支持50行内的任意数. 预期结果如图所示 1 这是第几行呢,是第1 1 1 这是第几行呢,是第2 1 2 1 这是第 ...

  8. 一个还算简单的微信消息SDK(基于.Net Standard 2.0)

    虽然微信公众号出现了好久,不过在SDK这件事情上感觉并没有多少人把它当成一个有技术含量的事情来做,很多SDK做的事情就是一个代码的堆叠,当然也可能写的好的并没有开源出来.所以在某个翻遍Github而无 ...

  9. Django创建模板、URL模式、创建视图函数

    1.在应用目录下创建模板(templates目录) 在模板目录下创建archive.html <!DOCTYPE html> <html lang="en"> ...

  10. 201671010121 2016-2017-2《java程序设计》第一周学习总结

    之前学了些C语言,学的也不是太懂,还算能读懂一些简答的代码吧,我觉得这就是进步.刚步入大二,在计算机这个专业里不刻苦是不行的.但是,到我拿到Java书的时候,真心是吓住我了,好厚的一本书啊,不过在老师 ...