问题描述:今天工作中需要用户上传个人头像,然后后台根据传来的坐标以及宽度高度来裁剪并存到mysql数据库。
用Thumbnails 来进行裁剪图片
一、建立数据库
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’个人中心用户头像表’;
二、前台通过ajaxFileUpload上传图片文件和坐标参数
三、后台接收到通过mybatis存到mysql
//action中定义文件、坐标信息以及裁剪宽度和高度
public String insertOrUpdate() throws Exception {
ActionContext.initialize(ServletActionContext.getRequest(),
ServletActionContext.getResponse());
dataMap = new HashMap
();
tbSysUserPhoto = new TbSysUserPhoto();
try{
tbSysUserPhoto.setUserNo(User.getRegNo(ServletActionContext.getRequest()));
tbSysUserPhoto = tbSysUserPhotoBo.getById(tbSysUserPhoto);
//byte输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
//按坐标 高度和宽度裁剪
Thumbnails.of(banner).sourceRegion(x1,y1,x2,y2).size(w,h).toOutputStream(out);//到输出流
Thumbnails.of(banner).sourceRegion(x1,y1,x2,y2).size(w,h).toFile(“D:\\test\\dd.jpg”);//存到硬盘
if(tbSysUserPhoto == null){//新增
tbSysUserPhoto = new TbSysUserPhoto();
tbSysUserPhoto.setUserPhoto(out.toByteArray());
tbSysUserPhoto.setUserNo(User.getRegNo(ServletActionContext.getRequest()));
tbSysUserPhotoBo.insert(tbSysUserPhoto);
}else{
tbSysUserPhoto.setUserPhoto(out.toByteArray());
tbSysUserPhotoBo.update(tbSysUserPhoto);
}
dataMap.put(“flag”, “success”);
dataMap.put(“msg”, “保存成功!”);
}catch(Exception e){
e.printStackTrace();
dataMap.put(“flag”, “error”);
dataMap.put(“msg”, “保存失败!”);
throw new Exception(e.getMessage());
}
return SUCCESS;
}
另外:Thumbnails 还有其他按比例 裁剪 水印 旋转等功能就不再赘述
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225669.html原文链接:https://javaforall.net
