1. /**

    • 本地图片转base64并限制文件大小
    • @param imagePath 图片全路径
    • @param sizeLimit 大小 整数 限制的大小 KB 1024
    • @return 返回值为0,imageurl为空;返回值为1,imageurl路径不可访问;具体指为转换后的值
      */
      public static String convertLocalImageToBase64(String imagePath, Integer sizeLimit) {
      Log.debug(“[本地图片转base64]imagePath:{},sizeLimit:{}” + imagePath + sizeLimit);
      // 判断路径是否为空
      if (StrUtil.isBlank(imagePath)) {
      Log.debug(“传入的地址为空!”);
      return “0”;
      }
      // 默认上限为50k
      if (sizeLimit == null) {
      sizeLimit = 50;
      }
      sizeLimit = sizeLimit * 1024;
      String base64Image = null;
      DataInputStream dataInputStream = null;
      ByteArrayOutputStream outputStream = null;
      ByteArrayInputStream inputStream = null;
      try {
      FileInputStream fis = new FileInputStream(imagePath);
      dataInputStream = new DataInputStream(fis);
      outputStream = new ByteArrayOutputStream();
      byte[] buffer = new byte[2048];
      int length;
      while ((length = dataInputStream.read(buffer)) > 0) {
      outputStream.write(buffer, 0, length);
      }
      byte[] context = outputStream.toByteArray();
      Log.debug(“[本地图片转base64]byte context”);
      // 将图片数据还原为图片
      inputStream = new ByteArrayInputStream(context);
      BufferedImage image = ImageIO.read(inputStream);
      int imageSize = context.length;
      int type = image.getType();
      int height = image.getHeight();
      int width = image.getWidth();
      BufferedImage tempImage;
      // 判断文件大小是否大于size,循环压缩,直到大小小于给定的值
      Log.debug(“[imageSize]” + imageSize + " sizeLimit :" + sizeLimit);
      while (imageSize > sizeLimit) {
      Log.debug(“[循环压缩]” + imageSize + " ,sizeLimit :" + sizeLimit);
      // 将图片长宽压缩到原来的90%
      height = new Double(height * 0.9).intValue();
      width = new Double(width * 0.9).intValue();
      tempImage = new BufferedImage(width, height, type);
      // 绘制缩小后的图 //不执行也不报错需要配置下服务器tomcat启动配置 留在文章结尾
      Log.debug(“[tempImage]” + tempImage);
      tempImage.getGraphics().drawImage(image, 0, 0, width, height, null);
      // 重新计算图片大小
      outputStream.reset();
      boolean wriFlag = ImageIO.write(tempImage, “jpg”, outputStream);
      imageSize = outputStream.toByteArray().length;
      Log.debug(“[压缩后 imageSize]” + imageSize);
      }
      // 将图片转化为base64并返回
      byte[] data = outputStream.toByteArray();
      // 此处一定要使用org.apache.tomcat.util.codec.binary.Base64,防止再linux上出现换行等特殊符号
      base64Image = Base64.encodeBase64String(data);
      return base64Image;
      } catch (Exception e) {
      Log.error(“[本地图片转base64][异常]”, e);
      } finally {
      IoUtil.close(dataInputStream);
      IoUtil.close(outputStream);
      IoUtil.close(inputStream);
      }
      Log.debug(“[本地图片转base64]base64Image的长度:{}” + base64Image.length());
      return base64Image;
      }

//这个不执行困扰了好几天,找了很多说法也换了很多方法都不行,最后在tomcat启动配置项修改了下 竟然成功了

linux下tomcat的启动文件要设置JAVA_OPTS=“-Djava.awt.headless=true”

java 本地图片压缩 转base64并限制文件大小相关推荐

  1. java将图片转成Base64编码,并压缩至40k

    1.添加jar包 <!-- 压缩图片--> <dependency><groupId>net.coobird</groupId><artifact ...

  2. Android 超清大尺寸图片压缩转Base64中卡顿/速度优化问题整理(在子线程压缩Bitmap卡的主线程进度条走不动了。。。)

    最近遇到需求是前后端传输图片使用的是Base64,但是前端(Android 端)图片很大(尺寸很大4480 × 2520,质量也很大7-10M),需要压缩到一定尺寸(1280 × 960,当然还可以压 ...

  3. Java将图片压缩为原来的一半

    Java将图片压缩为原来的一半 思路: 1.获取源图片的尺寸 2.设置目标图片的尺寸 3.打开源图片 4.基于源图片生成目标图片 ps: 在linux上无法使用JPEGImageEncoder ,因此 ...

  4. vue3 项目修改打包后的引用路径,调整图片压缩成base64的门槛

    vue3 项目修改打包后的引用路径,调整图片压缩成base64的门槛 前言 解决 完事 前言 最近的项目中需要在程序中显示一个H5页面,所以按照官方VUE CLI的教程创建了一个项目开始整.整到最后打 ...

  5. 前台图片压缩转换base64提交到后台

    这里使用了挺好用的插件 localResizeIMG3-master 前台: <div class="photo" οnclick="imgPath.click() ...

  6. Java 实现图片压缩、裁剪

    1.引入依赖 <!--hutool 工具--> <dependency><groupId>cn.hutool</groupId><artifact ...

  7. 纯Java代码 图片压缩

    Java图片压缩代码 package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java. ...

  8. Java将图片压缩100KB以下,压缩图片,将几MB的图片压缩成100KB

    前言 随着手机像素越来越大图片占用内存就越大,用户上传多几张图片都占用了很多存储内存,所以我们需要将图片压缩为占用内存较小的图片 实现 复制这个类过去就可以使用,根据自己需求修改即可 package ...

  9. 写给大忙人看的 - Java中图片压缩上传至MinIO服务器(4)

    之前文章已经介绍了 MinIO 的环境搭建,已经对文件的上传下载方法,本篇文章一起与大家来学习图片压缩上传的方法 1.背景 最近客户总抱怨 APP 中图片显示较慢, 升级服务器带宽又没有多的预算.查看 ...

最新文章

  1. 使用 Blender* 重新拓扑 VR 和游戏素材
  2. 百度bae mysql_微信公众号开发第二课 百度BAE搭建和数据库使用
  3. 未来,大脑扫描背包将神经科学带入现实世界
  4. 天堂向左,六级考场向右
  5. 51Testing第二十一期软件测试免费沙龙开始报名(上海)
  6. 菜单点击展开,超过四个则进行向右滑动显示demo
  7. easypoi 导入失败返回错误文件_从Excel批量导入数据说到ForkJoin的原理
  8. c需要实现安装卸载Linux模块,Linux内核模块编译与加载
  9. Oracle新建用户、角色,授权,建表空间
  10. 第三方登录 steam_如何在Steam中激活第三方游戏代码
  11. java数据清洗_数据清洗例子
  12. python简单温度转换,python编写的简单温度转换程序
  13. Imbalance data——数据不平衡问题
  14. 试题 基础练习 数列排序
  15. 成人世界黑话鉴定指南
  16. 2022年度上半年河南省建筑工程安全文明标准化示范工地认定意见公示
  17. java 开发程序IDE
  18. 基于VB的COM编程入门教程
  19. 《弃子长安》第九章 大漠金钩
  20. Mysql优化之使用短索引

热门文章

  1. linux ssh怎样删除文件夹,Linux服务器一键删除文件夹SSH命令
  2. 乐观锁和悲观锁各自应用场景
  3. 推荐7个超棒的监控工具
  4. 【专业数据】七.2020~2022年北京交通大学【计算机技术】专业复试线/分数线差/计划招生数/复试数/录取数/复试比例/录取率
  5. 多张无序图像自动全景拼接
  6. android 剪贴板图文混编,Android将图像复制到剪贴板/ clipdata
  7. Kafka分布式消费学习
  8. 计算两个有序数组的中位数(C++)
  9. python代码雨在桌面实现_今天七夕节,外面下着大雨,用Python的tkinter做一个下爱心雨的特效,发给妹子...
  10. IB考试结束就想溜?这些后续工作可要注意