图片截取上传

图片截取,前端传来截图坐标,后端进行处理

public static boolean CutImage(String path1,String path2,int x,int y,int w,int h){
       FileInputStream fileInputStream=null;
       ImageInputStream iis=null;
       boolean flag = false;

       File file = new File(path2);
       if (!file.getParentFile().exists() || file.getParentFile().isDirectory()) 
   {
      // 创建文件保存路径
           file.getParentFile().mkdirs();
   }

       try {
           //读取图片文件,建立文件输入流
           fileInputStream=new FileInputStream(path1);
           //创建图片的文件流 迭代器
           Iterator<ImageReader> it = null;
           int lastIndexOf = path1.lastIndexOf(".");
           String format = "";
           if(-1 != lastIndexOf){
               format = path1.substring(lastIndexOf+1);

           }
           if("jpg".equals(format.toLowerCase()) || "jpeg".equals(format.toLowerCase()) ){     
               it = ImageIO.getImageReadersByFormatName("jpg");
           }else if("png".equals(format.toLowerCase())){
               it = ImageIO.getImageReadersByFormatName("png");
           }
           ImageReader reader=it.next();
           //获取图片流 建立文图 文件流
           iis=ImageIO.createImageInputStream(fileInputStream);
           //获取图片默认参数
           reader.setInput(iis, true);
           ImageReadParam param=reader.getDefaultReadParam();
           //定义裁剪区域
           Rectangle rect=new Rectangle(x,y,w,h);
           param.setSourceRegion(rect);
           BufferedImage bi=reader.read(0,param);

           ImageIO.write(bi, format.toLowerCase(), file);
           flag = true;
       } catch (Exception e) {
           LOGGER.debug("图片裁剪失败,原因:");
           e.printStackTrace();
           flag = false;
       }finally{
           try {
               if(fileInputStream!=null){
                   fileInputStream.close();
               }
               if(iis!=null){
                   iis.close();
               }
           } catch (IOException e) {
               e.printStackTrace();
           }

       }
       return flag;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值