使用cropper.js裁剪头像的实例代码

最近项目需要头像裁剪的功能,在网上找了一下,发现了github上的cropper项目还不错,借鉴了一下。。用起来挺简单的,下面是我做的一个小例子:

开始先放个成品图:

下面给出前后端的代码

前端页面一个单独的jsp页面,用来做弹出层来裁剪图片比较好。

关于jsp页面引用的两个关于cropper的 文件,我就不提供了。大家需要的可以去官方的github上去下载。

地址:

<%@ include file="../common_front.jsp" %> Insert title here
选择图片
上传头像">

snippet_file_0.txt

下面是我后台处理方法,大家可以借鉴一下。后台是ssm框架,主要是保存图片图片转码

rush:js;"> //用户上传头像 /** * * @param image 选择的图片 * @param model * @param userId 用户id * @param userType 用户类型 * @param request * @param originalImage 上一张临时图片 * @return */ @RequestMapping(value="/imageUpload",method=RequestMethod.POST) public String iconImageUpload(@RequestParam(value="file",required=false)multipartfile image,Model model,@CookieValue("userId")String userId,HttpServletRequest request,String originalImage){ String basePath="image/"; //web.xml里面配置的用户图片存储路径 String userImagePath=request.getSession().getServletContext().getinitParameter("userImageSavePath"); //图片相对路径 String imageRelativePath=FileUtils.fileUpload(image,request,basePath+userImagePath); System.out.println("图片保存路径------"+imageRelativePath); System.out.println("上一张临时图片------"+originalImage); //删除上一张临时图片 if(originalImage!=null){ String basePathTemp=request.getSession().getServletContext().getRealPath("/"); FileUtils.deleteFile(basePathTemp+originalImage); } model.addAttribute("imageRelativePath",imageRelativePath); model.addAttribute("userId",userId); return "/crop_image"; } //将裁剪好的头像由base64还原成图片 @ResponseBody @RequestMapping(value="/saveUserIcon",method=RequestMethod.POST) public Msg saveUserIcon(String icon,@CookieValue("userType")String userType,String originalImage,HttpServletRequest request){ System.out.println("icon-----"+icon); //先生成图片地址 String realpath=request.getSession().getServletContext().getRealPath("/"); String basePath="image/"; String userImagePath=request.getSession().getServletContext().getinitParameter("userImageSavePath"); Calendar Now=Calendar.getInstance(); String relativePath=basePath+userImagePath+"/"+Now.get(Calendar.YEAR)+"/"+(Now.get(Calendar.MONTH)+1)+"/"+Now.get(Calendar.DAY_OF_MONTH)+"/"+FileUtils.getUUID()+".png"; String imagePath=realpath+relativePath; //将base64 转换成图片 FileUtils.base64ToImage(icon,imagePath); //删除原图 if(originalImage!=null){ FileUtils.deleteFile(realpath+originalImage); } return Msg.success(); } //下面是解码的方法 public static boolean base64ToImage(String base64,String path) {// 对字节数组字符串进行Base64解码并生成图片 if (base64 == null){ // 图像数据为空 return false; } System.out.println(base64); // base64 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 base64=base64.split(",")[1]; BASE64Decoder decoder = new BASE64Decoder(); try { // Base64解码 byte[] bytes = decoder.decodeBuffer(base64); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) {// 调整异常数据 bytes[i] += 256; } } // 生成图片 OutputStream out = new FileOutputStream(path); out.write(bytes); out.flush(); out.close(); return true; } catch (Exception e) { return false; } }

总结

以上所述是小编给大家介绍的使用cropper.js裁剪头像的实例代码。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面