Html5实现头像上传和编辑,保存为Base64的图片过程
一、Html5实现头像上传和编辑
插件地址:
html5手机端裁剪图片上传头像代码
本地项目引入注意事项:
1.将html的js搬到外面的js文件中,便于管理
2.图片样式在html都是在页面写死,需要调整
3.页面引入css和js,editPic.js是页面提取出来的js
<link href="../js/fileupload/style.css" rel="stylesheet" type="text/css">
<script src="../js/fileupload/jquery.min.js" type="text/javascript"></script>
<script>window.jQuery|| document.write('<script src="js/jquery-2.1.1.min.js"><\/script>')</script>
<script src="../js/fileupload/iscroll-zoom.js"></script>
<script src="../js/fileupload/hammer.js"></script>
<script src="../js/fileupload/jquery.photoClip.js"></script>
<script src="../js/editPic.js" type="text/javascript"></script>
关键代码:
<!-- 上传图片的样式 -->
<article class="htmleaf-container" style="display: none;">
<div id="clipArea"
style="user-select: none; overflow: hidden; position: relative;">
<div class="photo-clip-view">
<div class="photo-clip-moveLayer">
<div class="photo-clip-rotateLayer"></div>
</div>
</div>
<div class="photo-clip-mask">
<div class="photo-clip-mask-left"></div>
<div class="photo-clip-mask-right"></div>
<div class="photo-clip-mask-top"></div>
<div class="photo-clip-mask-bottom"></div>
<div class="photo-clip-area"></div>
</div>
</div>
<div class="foot-use">
<div class="uploader1 blue">
<input type="button" name="file" class="button" value="打开">
<input id="file" type="file"
onchange="javascript:setImagePreview();" accept="image/*"
multiple="">
</div>
<button id="clipBtn">截取</button>
</div>
<div id="view"></div>
</article>
显示图片的位置
<p class="userPic mb10">
<a id="logox"><i><img id="show" src="" width="100%"></i></a>
</p>
修改$("#clipBtn")方法体
其中imgsource就是插件,剪切出来的base64位的图片编码,我们需要将编码转成图片保存
$("#clipBtn").click(
function() {
$.ajax({
type : 'POST',
url : PROJECT_PATH + '/upload/mobileUploadPic',
data : {
"imgsource" : imgsource,
"path" : "citizens"
},
dataType : 'text',
success : function(data) {
var ao = $.parseJSON(data);
if (ao.result) {
picFileSaveUrl = ao.obj.picFileSaveUrl;
$("#show").attr("src",PROJECT_PATH+picFileSaveUrl);
$("#pictureUrl").val(PROJECT_PATH+picFileSaveUrl);
$(".htmleaf-container").hide();
}
},
// 调用出错执行的函数
error : function() {
}
});
})
});
二、Base64的存储为本地图片过程
需要注意的是 图片的base64位是带有"data:image/jpeg;base64,"字段,需要去掉,才能保存图片的
public final static String BASE64_HEADER = "data:image/jpeg;base64,";// base64位的头部信息
File file = new File(picUrl);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
} String base64ImgData = imgsource.substring(BASE64_HEADER.length(), imgsource.length() - 1); decodeBase64ToImage(base64ImgData, file);// 转成文件
/**
* 将Base64位编码的图片进行解码,并保存到指定目录
*
* @param base64
* base64编码的图片信息
* @return
*/
public static void decodeBase64ToImage(String base64, File file) {
BASE64Decoder decoder = new BASE64Decoder();
try { byte[] decoderBytes = decoder.decodeBuffer(base64); for (int i = 0; i < decoderBytes.length; ++i) {
// 调整异常数据
if (decoderBytes[i] < 0) {
decoderBytes[i] += 256;
}
} OutputStream write = new FileOutputStream(file);
write.write(decoderBytes);
write.flush();
write.close();
} catch (IOException e) {
e.printStackTrace();
}
}
完~
Html5实现头像上传和编辑,保存为Base64的图片过程的更多相关文章
- springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux
//我的会员中心 头像上传接口 /*windows 调试*/ @Value("${appImg.location}") private String winPathPic; /*l ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- 强大的flash头像上传插件(支持旋转、拖拽、剪裁、生成缩略图等)
今天介绍的这款flash上传头像功能非常强大,支持php,asp,jsp,asp.net 调用 头像剪裁,预览组件插件. 本组件需要安装Flash Player后才可使用,请从http://dl.pc ...
- struts 头像上传
java代码: 1 package cn.itcast.nsfw.user.action; import java.io.File; import java.io.IOException; impor ...
- Canvas处理头像上传
未分类 最近社区系统需要支持移动端,其中涉及到用户头像上传,头像有大中小三种尺寸,在PC端,社区用Flash来处理头像编辑和生成,但该Flash控件的界面不友好而且移动端对Flash的支持不好,考虑到 ...
- Yii2.0 集成使用富头像上传编辑器
在开发过程中,我们会用到头像上传的功能.这里给大家推荐一款比较流行的头像上传组件,FullAvatarEditor 2.3(富头像上传编辑器). 实际效果如图所示: 1.下载组件,下载地址:http: ...
- 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑
项目中需要用到多图片上传功能,于是在百度搜了一下,首先使用了kissy uploader,是由阿里前端工程师们发起创建的一个开源 JS 框架中的一个上传组件...但,后面问题出现了. 在对添加的信息进 ...
- php头像上传预览
php头像上传带预览: 说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过fo ...
- Django项目实战之用户头像上传与访问
1 将文件保存到服务器本地 upload.html <!DOCTYPE html> <html lang="en"> <head> < ...
随机推荐
- 【HDOJ】前三百留念
4个月不到的时间,终于刷到了HDOJ前三百.肯定还不够,好多基本的算法还不了解.还得继续学习.以此留念,假期目标是前一百.
- 【HDOJ】1823 Luck and Love
二维线段树.wa了几次,不存在输出-1,而不再是一位小数. #include <cstdio> #include <cstring> #define MAXN 105 #def ...
- BZOJ1603: [Usaco2008 Oct]打谷机
1603: [Usaco2008 Oct]打谷机 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 602 Solved: 458[Submit][Stat ...
- unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇
最近逃课做游戏,逃的有几门都要停考了,呵呵呵,百忙之中不忘超炒冷饭,感觉之前的人皮效果还是不够好,又改进了一些东西 首先上图 放大看细节 显而易见的比上次的效果要好很多,此次我把模型用3dmax进行了 ...
- n个灯,k个人的开灯问题
/**有n个灯,编号为1-n.第一个人把所以灯打开,第二个人按下 所有编号为2的倍数的开关,第三个人按下3的倍数的开关,依次类推, 一共有k个人,问最后有哪些灯开着? 样例输入: 7 3 样例输出: ...
- ssh互信自动化脚本(待更新)
1.建立一个ip,端口,用户,密码列表 [root@localhost shell-key]# cat arg_list.txt 172.16.56.215 172.16.56.215 172.16. ...
- 《University Calculus》-chape5-积分法-微积分基本定理
定积分中值定理: 积分自身的定义是简单的,但是在教学过程中人们往往记得的只是它的计算方法,在引入积分的概念的时候,往往就将其与计算方法紧密的捆绑在一起,实际上,在积分简单的定义之下,微积分基本定理告诉 ...
- linux-kernel/CodingStyle
https://www.kernel.org/doc/Documentation/zh_CN/CodingStyle Chinese translated version of Documentati ...
- java ee eclipse 配置 ssh框架
mvnDebug tomcat:run 这条命令主要用来远程测试,它会监听远程测试用的8000端口,在eclipse里打开远程测试后,它就会跑起来了,设断点,调试,一切都是这么简单. 0.如果是mav ...
- 2014年河南省第七届ACM大赛总结
虽然大赛已经结束了两天,不过比赛的场景还是不断地在眼前回放,一遍遍,这次的比赛给了我很深刻的感悟还有教训. 刚开始比赛选择了贩卖武器那道题,也是全场到最后唯一没有被人做出来的一道题,策略的严重错误,大 ...