利用Thumbnails 根据坐标裁剪图片

利用Thumbnails 根据坐标裁剪图片问题描述 今天工作中需要用户上传个人头像 然后后台根据传来的坐标以及宽度高度来裁剪并存到 mysql 数据库 用 Thumbnails 来进行裁剪图片一 建立数据库 CREATETABLE tb sys user photo nbsp user no varchar 20 NOTNULLCOMME 用户名 nbsp user photo longblobCOMM 用户头像 nbsp

问题描述:今天工作中需要用户上传个人头像,然后后台根据传来的坐标以及宽度高度来裁剪并存到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

(0)
上一篇 2026年3月17日 上午8:48
下一篇 2026年3月17日 上午8:48


相关推荐

  • ClientToScreen 和ScreenToClient用法

    ClientToScreen 和ScreenToClient用法ClientToScre 是把窗口坐标转换为屏幕坐标 ScreenToClie 是把屏幕坐标转换为窗口坐标屏幕坐标是相对于屏幕左上角的 而窗口坐标是相对于窗口用户区左上角的 VC 下 有些函数使用窗口坐标 有些使用屏幕坐标 使用时要分清 一个窗体分为两部分 系统区和客户区象标题和菜单之类的是系统区 由系统来控制 客户区就是你的地盘喽 Width Heig

    2026年3月17日
    0
  • 1310-全国-中国古代文学史(二)「建议收藏」

    1310-全国-中国古代文学史(二)「建议收藏」1310-全国-中国古代文学史(二)总分:100一、单选题(共30题,共30分)1、苏舜钦的诗歌风格是()(1分)A:豪犷雄放B:平淡瘦劲C:生新瘦硬D:​沉博绝丽2、我国最早的话本小说总集是嘉靖年间洪楩编辑刊刻的《六十家小说》,又称为()(1分)A:《古今小说》B:《清平山堂话本》C:《今古奇观》D:《型世言》3、徐渭《四声猿》中最杰出的一部作品是()(1分)A:《狂鼓史渔阳三弄》B:《玉禅师翠乡一梦》C:《雌木兰替父从军》D:《女状元辞凰得凤》4、被称为“昆曲之

    2022年5月18日
    52
  • 全球掀起“AI龙虾”热,谁在闷声发大财?OpenClaw token消耗量前三均为中国厂商

    全球掀起“AI龙虾”热,谁在闷声发大财?OpenClaw token消耗量前三均为中国厂商

    2026年3月15日
    2
  • 对于RFID-RC522 模块的读写操作【Arduino】[通俗易懂]

    对于RFID-RC522 模块的读写操作【Arduino】[通俗易懂]玩儿板子–用Arduino链接RFID-RC522型号的Rfid模块。并且用放出实例代码目前百度基本上搜不到RC522板子的具体操作代码,基本上贴出来的只有接线,所以这次直接放出读写操作的代码算是做贡献吧。这个是板子建议:把送的两个插头,焊上去是最好的接线:

    2026年1月24日
    3
  • VBScript 语法

    VBScript 语法

    2026年3月20日
    2
  • Go string 转map

    Go string 转map最近用 go 重构 python 项目 遇见一些问题 简单记录一下 1 string 转 map 为什么要想到这个转换方式呢 主要是 python 项目中用到的是 string 转字典 比如 前端传过来的 book python 基础教程 用 python 简单接收之后 用 json load 很简单转为字典 用 go 的话 最简单的方式是 string 转 map class detail

    2026年3月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号