一、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的图片过程的更多相关文章

  1. springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux

    //我的会员中心 头像上传接口 /*windows 调试*/ @Value("${appImg.location}") private String winPathPic; /*l ...

  2. 【javascript】html5中使用canvas编写头像上传截取功能

    [javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...

  3. 强大的flash头像上传插件(支持旋转、拖拽、剪裁、生成缩略图等)

    今天介绍的这款flash上传头像功能非常强大,支持php,asp,jsp,asp.net 调用 头像剪裁,预览组件插件. 本组件需要安装Flash Player后才可使用,请从http://dl.pc ...

  4. struts 头像上传

    java代码: 1 package cn.itcast.nsfw.user.action; import java.io.File; import java.io.IOException; impor ...

  5. Canvas处理头像上传

    未分类 最近社区系统需要支持移动端,其中涉及到用户头像上传,头像有大中小三种尺寸,在PC端,社区用Flash来处理头像编辑和生成,但该Flash控件的界面不友好而且移动端对Flash的支持不好,考虑到 ...

  6. Yii2.0 集成使用富头像上传编辑器

    在开发过程中,我们会用到头像上传的功能.这里给大家推荐一款比较流行的头像上传组件,FullAvatarEditor 2.3(富头像上传编辑器). 实际效果如图所示: 1.下载组件,下载地址:http: ...

  7. 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑

    项目中需要用到多图片上传功能,于是在百度搜了一下,首先使用了kissy uploader,是由阿里前端工程师们发起创建的一个开源 JS 框架中的一个上传组件...但,后面问题出现了. 在对添加的信息进 ...

  8. php头像上传预览

    php头像上传带预览: 说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过fo ...

  9. Django项目实战之用户头像上传与访问

      1 将文件保存到服务器本地 upload.html <!DOCTYPE html> <html lang="en"> <head> < ...

随机推荐

  1. maven错误解决:编码GBK的不可映射字符

    直接将项目改为UTF-8编码,无效! 要通过修改pom.xml文件,告诉maven这个项目使用UTF-8来编译. 方案一: 在pom.xml的/project/build/plugins/下的编译插件 ...

  2. ant 学习与开发

    ant 学习与开发 http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html

  3. HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  4. HDOJ 1013题Digital Roots 大数,9余数定理

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

  5. [原]ubuntu下制作openstack-havana源

    ubuntu下可以用apt-mirror下载openstack的源: 1.安装apt-mirror: apt-get install apt-mirror 2.配置/etc/apt/mirror.li ...

  6. Node.js学习(12)----Web应用开发

    1.使用http模块 Node.js 由于不需要另外的 HTTP 服务器,因此减少了一层抽象,给性能带来不少提升, 但同时也因此而提高了开发难度.举例来说,我们要实现一个 POST 数据的表单,例如: ...

  7. UVA 465 (13.08.02)

     Overflow  Write a program that reads an expression consisting of twonon-negative integer and an ope ...

  8. 小试牛刀——python接口测试小框架

    用例设计: 执行用例代码: # -*- coding: UTF-8 -*-import xlrd,logging,urllib,urllib2,json,sysfrom pylsy import py ...

  9. winform 子窗体数据改变刷新父窗体 分类: WinForm 2014-05-06 18:30 246人阅读 评论(0) 收藏

    两种方法实现: 第一种,传时间变量,主窗体要不停的刷新数据,占用资源比较大. 第二种,用this,感觉比较好用,建议用这种方法. 举例: 主窗体命名:FormA; 子窗体命名:FormB; 数据绑定方 ...

  10. CSU1312:榜单(模拟)

    Description ZZY很喜欢流行音乐,每周都要跟踪世界各地各种榜单,例如Oricon和Billboard,现在给出每周各个单曲的销量请给出每周的TOP5以及TOP5中各个单曲的浮动情况. 量的 ...