mui+vue+photoclip做APP头像裁剪上传
做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头像裁剪上传的更多相关文章
- springMVC 头像裁剪上传并等比压
第一次写头像裁剪上传,原本想着直接本地预览裁剪再上传,可是时间有限,jquery.jcrop貌似并没有对 假设是ie下图片预览效果是滤镜做的 做出对应处理,也没有时间去改;仅仅好将就一下先把图片上传 ...
- 第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传
第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传 实现原理 前台用cropper插件,将用户上传头像时裁剪图片的坐标和图片,传到逻辑处理 ...
- jfinal头像裁剪上传服务器
前端页面完整代码,复制可用,记得导入库文件 <!DOCTYPE html> <html lang="en"> <head> <title& ...
- 5.21学习总结——android开发实现用户头像的上传
最近在做个人头像的上传,具体是能调用摄像头和从相册进行选择.本篇文章参考的我的同学的博客,大家有兴趣可以去原作者那里去看看: Hi(.・∀・)ノ (cnblogs.com) 1.使用glide进行图片 ...
- PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例
PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例,在手机上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度,在电脑上鼠标滚轮为缩放,双击则顺时针旋转90度. 下面让我们来看 ...
- 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)
flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...
- 记录下hbuilder vue项目打包APP 在IOS上点击延迟的问题
做的项目打包成APP在IOS 上有延迟问题,在安卓下却不会,联想到之前 用IONIC时打包的APP也是 在IOS下有300毫秒延迟问题.所以 只能 认吧. 安装fastclick 插件: npm in ...
- Vue+axios+Node+express实现文件上传(用户头像上传)
Vue 页面的代码 <label for='my_file' class="theme-color"> <mu-icon left value="bac ...
- 图片裁剪上传插件——jquery.photoClip.js
想要裁剪图片上传: 需要依赖的的插件为: [jquery.photoClip.js] 插件[iscroll-zoom.js] 插件[hammer.js] 插件 [lrz.all.bundle.js] ...
随机推荐
- Sublime text2插件
Sublime插件: Sublime有好几种安装插件的方法,但是最好用也是最长用的是ctrl+shift+p. 第一步: 使用ctrl+` 调出Sublime控制台,在控制台中输入 import ur ...
- RESTEasy maven使用
添加依赖: <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteas ...
- centos7 安装 最新版本的docker
yum update # vim /etc/yum.repos.d/docker.repo //添加以下内容 [dockerrepo] name=Docker Repository baseurl=h ...
- SQL Server 2008 清空删除日志文件 130G日志 10秒内变10M
SQL2005: Backup Log DNName with no_log '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了. go dump transact ...
- WinForm中实现HotKey
最近在写一个游戏辅助工具,来点Win变成的总结 主要用了RegisterHotKey:UnregisterHotKey:两个winAPI 以下代码来自stackoverflow新增了一个HotKeyM ...
- PyCharm使用Github管理代码
本篇文章主要写一下如何通过pycharm客户端来上传下载代码. 安装Git 在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可. 安 ...
- centos7 更改主机名
在CentOS或RHEL中,有三种定义的主机名:a.静态的(static),b.瞬态的(transient),以及 c.灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时从/etc ...
- scala中Stream理解
// Stream:Stream is lazy List; // Stream惰性求值指它只确定第一个值,后面的值用到再求值,这样可以防止数据过大全部加载导致内存溢出 // 将Range转化成Str ...
- bool和BOOL类型知识集合
知识点一.C语言中有bool类型吗? 转自http://blog.csdn.net/liuqiqi677/article/details/6703615 之前一直都没有注意到,最近在用C语言写DSP算 ...
- pycharm2016.2.3注册码到期, 激活, 破解版
python工具下载: https://pan.baidu.com/s/1kVEDOrl#list/path=%2F 密码:ko1i 注册码有效期是一年,到期后需再次激活 分享破解版 或者重新注册码激 ...