博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mui开发app之cropper裁剪后上传头像的实现
阅读量:4988 次
发布时间:2019-06-12

本文共 2860 字,大约阅读时间需要 9 分钟。

应广大读者建议,已经将该项目源码提交到地址: 

 

 

在大多数app项目中,都需要对用户头像的上传,之前做web开发的时候,我主要是通过input type=file的标签实现的,上传后,使用php对图片进行裁剪,这种方式比较传统简单。

此次app开发中需要做到用户选择本地相册或者进行拍照->对照片进行裁剪->最后同时更新本地头像和服务器端的图片。(app常见套路)

我将要结合:mui,cropper,jquery开发!

 

实现思路:

1.用户点击头像,打开actionsheet

2.选择图片或者拍照后返回的图片绝对地址传入单独的裁剪页面,跳转到裁剪页面

3.裁剪页面裁剪后选择确认则将裁减后图片保存到localstorage中(其实是把整个图片保存到本地数据库中)

4.触发一个更新上一页头像的事件,返回上一页

5.看到图片已经更改

6.保存,图片上传到服务器(json)

7.服务器将图片的base64保存到数据库(text类型),实现数据库保存图片,当然可以使用后端语言的方法还原为图片后保存在文件系统中(建议:小图可保存在数据库中,大图保存在文件系统)

 

实现工具和插件,直接看代码:

js

css

这里我们主要使用了一个cropper.js的插件,自行百度下载,目前比较好用的插件只有这个,大神的话自己写一个吧

注意cropper必须使用jquery,而jquery比较臃肿,在其他mui中尽量不要引入,我也是迫不得已,使用jq并非我本意

fastclcik.js是加速点击触发,一般在手机端开发其实用不到,因为一般使用tap,这里我加了进去,似乎对裁剪图片时手势操作有帮助,(+_+)?,不加也没有影响,测试过

iconfont是按钮图标

exif.js是可以检测图片拍摄时采用横向还是纵向

这几个请自行百度下载!

 

接下来可以开发了:

一共两个页面,

headinfo.html——编辑页面

cropper.html——裁剪页面

 

headinfo.html

            
我的资料

头信息

个人签名:
View Code

 

cropper.html

 

            
裁剪头像
Picture

View Code

 

一开始对于headinfo.html我是打算先将拍照和相册获取的图片使用plus的io保存到项目app的_doc目录下再编辑裁剪,但是发现可以精简,直接把图片的绝对地址传到cropper中,直接编辑后保存为base64,放在localstorage中,以后需要头像的地方直接从localstorage中获取即可!我在app.js(这是我写的项目的公共js类库,处处引用)

/*  *这只是其中一部分,在裁剪过程中需要用到的库函数  *主要是方便,随时可以获取保存在localstorage中的头像base64图*/(function($, owner) {         // 获取用户个人信息    owner.getUserInfo = function() {        var userText = localStorage.getItem('$user') || "{}";        return JSON.parse(userText);    }     // 存储用户个人信息    owner.setUserInfo = function(user) {        user = user || {};        localStorage.setItem('$user', JSON.stringify(user));    }    // 获取用户头像    owner.getHeadImg = function() {        var headImg = owner.getUserInfo().my_icon || "";        return headImg;    }    //设置用户头像    owner.setHeadImg = function(baseData) {        var userInfo = owner.getUserInfo();        userInfo.my_icon = baseData; //只对my_icon这一项进行修改,其他不动        owner.setUserInfo(userInfo);    }    }(mui, window.app = {}));

 

base64的图片格式是html5 canvas所使用的图片格式,可以直接放入img的src中!

注:如果想使用js直接在手机端将base64转换为图片文件请看:

效果图:

               

 

转载于:https://www.cnblogs.com/devilyouwei/p/6322737.html

你可能感兴趣的文章
STL Vector详解
查看>>
JAVA调用基站云接口调用实例
查看>>
Asp.Net MVC的路由
查看>>
vue浏览器返回监听
查看>>
【CODEVS3117】高精度练习之乘法
查看>>
学习进度条02
查看>>
2016年秋季个人阅读计划
查看>>
HDU1286 找新朋友
查看>>
c#解析XML和JSON
查看>>
获取表单select域的选择部分的文本
查看>>
Android之分页加载数据
查看>>
初探Object Pascal的类(八)
查看>>
Hibernate one-to-one mapping with Composite key
查看>>
说说Runnable与Callable
查看>>
ThreadLocal详解
查看>>
MVC中的Repository模式
查看>>
数据结构 排序(快速排序)
查看>>
java.util.Calendar常量字段值
查看>>
对DotNet分布式应用搭建的考虑
查看>>
scala 隐式详解(implicit关键字)
查看>>