做APP由于项目需要,需要做用户头像上传的功能,头像上传包括拍照和相册选择图片进行上传,这里使用的技术是mui封装的plus,在进行图片裁剪的时候,使用的是photoclip来进行裁剪,由于个人在使用mui自带的组件做图片上传比较麻烦,所以就采用了base64的图片做上传会比较简单,页面的渲染采用的VUE来进行双向数据绑定。

不说了,看代码:

changeFace:function(){
this.selectFace = true;
this.mask = mui.createMask((res)=>{
this.selectFace = false;
});
this.mask.show();
},
// 拍照
takingPictures:function(){
this.selectFace = false;
this.mask.close();
// 拍照
var c = plus.camera.getCamera();
c.captureImage((e)=>{
plus.io.resolveLocalFileSystemURL(e,(entry)=>{
var path = entry.toLocalURL() + "?version=" + new Date().getTime();
console.log(path);
this.cutOutPictures(path);
// alert(imgPath);
},(e)=>{
console.log("读取拍照片文件错误:" + e.message);
});
},(s)=>{
console.log("error:"+s);
},{
filename: "_doc/head.png"
});
// this.cutOutPictures();
// console.log('takingPictures');
},
// 从相册中选择
selectFromalbum:function(){
this.selectFace = false;
this.mask.close();
// 从相册中选择图片
console.log("从相册中选择图片");
plus.gallery.pick((path)=>{
console.log(path);
this.cutOutPictures(path);
},(e)=>{
console.log("取消选择图片");
},{filter:"image"});
//console.log('selectFromalbum');
},
// 裁剪图片
cutOutPictures:function(imgSrc){
var that = this;
that.showSelectFace = true;
var saveImg = (imgPath)=>{
imgPath = imgPath.replace("data:image/jpeg;base64,", "");
this.data = {avatar:imgPath};
this.data = config.getParam(this.data);
mui.post(config.userProfileUpdate,this.data,(res)=>{
if(res.code == 200){
config.userInfo.avatar = res.data.avatar;
config.setStorage('userInfo',JSON.stringify(config.userInfo));
mui.toast("头像修改成功");
}else{
mui.toast(res.msg);
};
});
};
var clipArea = new PhotoClip("#clipArea", {
size: [300, 300],//裁剪框大小
outputSize:[0,0],//打开图片大小,[0,0]表示原图大小
file: "#file",
ok: "#clipBtn",
// img: "http://127.0.0.1/ff.jpg",
// img:'http://m3.biz.itc.cn/pic/new/n/50/14/Img5431450_n.jpg',
// img:"file:///F:/MuiProject/domo6/images/music0.jpg",
// img: "../images/music0.jpg",
// img: "../images/huiyuan_03.jpg?version=124545487878",
img:imgSrc,
// 图片开始加载的回调函数。this 指向当前 PhotoClip 的实例对象,并将正在加载的 file 对象作为参数传入。(如果是使用非 file 的方式加载图片,则该参数为图片的 url)
loadStart: function(){
$(".loading").removeClass("displaynone");
},
// 图片加载完成的回调函数。this 指向当前 PhotoClip 的实例对象,并将图片的 <img> 对象作为参数传入。
loadComplete: function() {
$(".loading").addClass("displaynone");
},
// 裁剪完成的回调函数。this 指向当前 PhotoClip 实例对象,会将裁剪出的图像数据DataURL作为参数传入。
done: function(dataURL){
that.showSelectFace = false;
saveImg(dataURL);
// console.log(dataURL);//dataURL裁剪后图片地址base64格式提交给后台处理
$(".clipbg").hide()
}
});
$("#cancelBtn").on('tap',()=>{
that.showSelectFace = false;
$(".clipbg").hide();
});
// this.showSelectFace = true;
// var clipArea = new PhotoClip("#clipArea", {
// size: [300, 300],//裁剪框大小
// outputSize:[0,0],//打开图片大小,[0,0]表示原图大小
// file: "#file",
// ok: "#clipBtn",
// // img: "http://127.0.0.1/ff.jpg",
// // img:'http://m3.biz.itc.cn/pic/new/n/50/14/Img5431450_n.jpg',
// // img:"file:///F:/MuiProject/domo6/images/music0.jpg",
// img: "../images/music0.jpg",
// loadStart: function() { //图片开始加载的回调函数。this 指向当前 PhotoClip 的实例对象,并将正在加载的 file 对象作为参数传入。(如果是使用非 file 的方式加载图片,则该参数为图片的 url)
// $(".loading").removeClass("displaynone");
// },
// loadComplete: function() {//图片加载完成的回调函数。this 指向当前 PhotoClip 的实例对象,并将图片的 <img> 对象作为参数传入。
// $(".loading").addClass("displaynone"); // },
// done: function(dataURL) { //裁剪完成的回调函数。this 指向当前 PhotoClip 的实例对象,会将裁剪出的图像数据DataURL作为参数传入。
// console.log(dataURL);//dataURL裁剪后图片地址base64格式提交给后台处理
// $(".clipbg").hide()
// }
// });
},

mui+vue+photoclip做APP头像裁剪上传的更多相关文章

  1. springMVC 头像裁剪上传并等比压

    第一次写头像裁剪上传,原本想着直接本地预览裁剪再上传,可是时间有限,jquery.jcrop貌似并没有对 假设是ie下图片预览效果是滤镜做的  做出对应处理,也没有时间去改;仅仅好将就一下先把图片上传 ...

  2. 第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传

    第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传 实现原理 前台用cropper插件,将用户上传头像时裁剪图片的坐标和图片,传到逻辑处理 ...

  3. jfinal头像裁剪上传服务器

    前端页面完整代码,复制可用,记得导入库文件 <!DOCTYPE html> <html lang="en"> <head> <title& ...

  4. 5.21学习总结——android开发实现用户头像的上传

    最近在做个人头像的上传,具体是能调用摄像头和从相册进行选择.本篇文章参考的我的同学的博客,大家有兴趣可以去原作者那里去看看: Hi(.・∀・)ノ (cnblogs.com) 1.使用glide进行图片 ...

  5. PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例

    PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例,在手机上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度,在电脑上鼠标滚轮为缩放,双击则顺时针旋转90度. 下面让我们来看 ...

  6. 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

    flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...

  7. 记录下hbuilder vue项目打包APP 在IOS上点击延迟的问题

    做的项目打包成APP在IOS 上有延迟问题,在安卓下却不会,联想到之前 用IONIC时打包的APP也是 在IOS下有300毫秒延迟问题.所以 只能 认吧. 安装fastclick 插件: npm in ...

  8. Vue+axios+Node+express实现文件上传(用户头像上传)

    Vue 页面的代码 <label for='my_file' class="theme-color"> <mu-icon left value="bac ...

  9. 图片裁剪上传插件——jquery.photoClip.js

    想要裁剪图片上传: 需要依赖的的插件为: [jquery.photoClip.js] 插件[iscroll-zoom.js] 插件[hammer.js] 插件 [lrz.all.bundle.js] ...

随机推荐

  1. [hadoop] hdfs 格式化错误 java.net.UnknownHostException

    执行 hdfs namenode -format 抛出错误 主机名称异常,查看主机信息 原来 通过 bogon 无法找到主机 ,在host 中也没有对应的映射信息 修改后即可 再次执行 hdfs na ...

  2. NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>

    一.集合外键 在NHibernate中,典型的用于映射集合类的元素有<set>,<list>,<map>,<bag>,<array>,< ...

  3. openssl & openssh

    什么是OpenSSL众多的密码算法.公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法.果真如此,在对你表示敬佩的同时,还是忍不住提醒你:这是一个令人望而生畏的过 ...

  4. RPM常用命令解释

    RPM软件包管理器,英文:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写) -i安装rpm包 -u升级rpm包 -q查询已安装的软件信息 ...

  5. Netty权威指南之伪异步I/O编程

    为了解决同步阻塞I/O一个链路需要一个线程处理问题,对BIO模型做了优化——后端通过一个线程池处理多个客户端的请求接入,设置线程最大值,防止线程并发接入导致的线程耗尽. 当有新的客户端接入时,将客户端 ...

  6. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  7. 执行RF设置顶层测试套件的描述说明

    场景1:通过pybot命令更新套件层描述 命令:pybot -D 套件层描述 -D --doc documentation 设置顶层测试套件的描述说明.说明中下划线将转换为空格, 并且他可能包含简单的 ...

  8. Splash plugins_enabled 属性

    plugins_enabled属性可以控制浏览器插件(如 Flash 插件)是否开启.默认情况下,此属性是 false ,表示不开启. function main(splash, args) spla ...

  9. requests 安装

    requests 是用来发送 HTTP 请求的一个库,requests 是对 urllib 和 urllib2 进行封装的一个模块,用来取代 urllib 和 urllib2,可以使用以下两种方法安装 ...

  10. C++ template —— 深入模板基础(二)

    上一篇C++ template —— 模板基础(一)讲解了有关C++模板的大多数概念,日常C++程序设计中所遇到的很多问题,都可以从这部分教程得到解答.本篇中我们深入语言特性.------------ ...