java压缩图片至指定大小,java压缩图片大小

  java压缩图片至指定大小,java压缩图片大小

  需求:

  大于2MB的图片需要压缩到2MB以下,且不改变原图的尺寸。

  (推荐教程:java入门教程)

  引入依赖:

  属国

  groupIdnet.coobird/groupId

  artifactId缩略图/artifactId

  版本0 .4 .8/版本

  /依赖关系附件实体类:

  @Builder

  @NoArgsConstructor

  @AllArgsConstructor

  @数据

  公共类FileCO

  /**

  * 附件字节流

  */

  私有字节[]文件内容;

  /**

  * 附件似…的

  */

  二等兵UUID附件oid

  }(视频教程推荐:java视频教程)

  图片实体类:

  @Builder

  @NoArgsConstructor

  @AllArgsConstructor

  @数据

  公共类图像信息{

  /**

  * 图片字节流

  */

  私有字节[]图像字节;

  /**

  * 图片是否进行压缩

  */

  私有布尔压缩标志

  /**

  * 图片宽度

  */

  私有整数宽度;

  /**

  * 图片高度

  */

  私有整数高度;

  }图片压缩工具类:

  @Slf4j

  公共类ImageUtils {

  /**

  * 合法图片大小为2MB

  */

  私有静态最终long LEGAL _ IMAGE _ SIZE=1024 * 2L;

  /**

  * 图片压缩当图片大小大于2MB进行等比例压缩

  * 不修改图片尺寸进行压缩

  *

  * @param fileCO

  * @返回

  */

  公共静态ImageInfo compressImageForScale(FileCO FileCO)引发IOException {

  byte[]图像字节=fileco。getfile content();

  UUID附件oid=fileco。getattachmentoid();

  尝试{

  缓冲图像源image=imageio。read(新bytearrayiputstream(图像字节));

  //高度

  int height=源图像。获取height();

  //宽度

  int width=源图像。getwidth();

  如果(图像字节。长度=0 图像字节。length LEGAL _ IMAGE _ SIZE * 1024){

  返回ImageInfo.builder()。图像字节(图像字节)。宽度(宽度)。高度(高度)。压缩标志(假)。build();

  }

  长src大小=图像字节。长度;

  双精度=获取精度(src大小/1024);

  而(图像字节。length LEGAL _ IMAGE _ SIZE * 1024){

  bytearray inputStream inputStream=new bytearray inputStream(图像字节);

  ByteArrayOutputStream输出流=新的ByteArrayOutputStream(图像字节。长度);

  缩略图(输入流)。刻度(1f)。输出质量(准确性)。输出流(输出流);

  图像字节=输出流。tobytearray();

  }

  log.info(【图片压缩】附件OID={} 图片原大小={}kb 压缩后大小={}kb ,

  attachmentOid,srcSize/1024,图像字节。长度/1024);

  返回ImageInfo.builder()。图像字节(图像字节)。宽度(宽度)。高度(高度)。压缩标志(真)。build();

  } catch(异常e) {

  log.error(【图片压缩】msg=图片压缩失败!,e);

  扔e;

  }

  }

  /**

  * 计算压缩精度

  *

  * @param size

  * @返回

  */

  私有静态双精度(长尺寸){

  双倍精度;

  //图片大小小于4M,压缩精度为0.44;否则精度为0.4

  if (size=2048 * 2) {

  准确度=0.44;

  }否则{

  精度=0.4;

  }

  返回精度;

  }

  }以上就是爪哇岛实现压缩图片且不改变原图尺寸的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: