转载:java 图片压缩不改变分辨率java压缩图片大小不改变图片分辨率_僵尸吃过跳跳糖的博客-CSDN博客_java 压缩图片分辨率

package com.cjn.util;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.*;/*** AUTHOR cjn* TIME  2018-4-16 11:08* REMARK 图片处理类 压缩图片大小*/
public class ImgUtil {static Logger logger = LoggerFactory.getLogger(ImgUtil.class);public static File compressPictureByQality(File file,float qality) throws IOException {BufferedImage src = null;FileOutputStream out = null;ImageWriter imgWrier;ImageWriteParam imgWriteParams;logger.debug("开始设定压缩图片参数");// 指定写图片的方式为 jpgimgWrier = ImageIO.getImageWritersByFormatName("jpg").next();imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null);// 要使用压缩,必须指定压缩方式为MODE_EXPLICITimgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);// 这里指定压缩的程度,参数qality是取值0~1范围内,imgWriteParams.setCompressionQuality(qality);imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);ColorModel colorModel =ImageIO.read(file).getColorModel();// ColorModel.getRGBdefault();// 指定压缩时使用的色彩模式
//        imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
//                colorModel, colorModel.createCompatibleSampleModel(16, 16)));imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(16, 16)));logger.debug("结束设定压缩图片参数");if (!file.exists()) {logger.error("Not Found Img File,文件不存在");throw new FileNotFoundException("Not Found Img File,文件不存在");} else {logger.debug("图片转换前大小"+file.length()+"字节");src = ImageIO.read(file);out = new FileOutputStream(file);imgWrier.reset();// 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何// OutputStream构造imgWrier.setOutput(ImageIO.createImageOutputStream(out));// 调用write方法,就可以向输入流写图片imgWrier.write(null, new IIOImage(src, null, null),imgWriteParams);out.flush();out.close();logger.debug("图片转换后大小"+file.length()+"字节");return file;}}
}
注意:这个方法对内存有一定的要求
原文链接:https://blog.csdn.net/sizhezhongnian/article/details/79962753

注意:这个方法对内存有一定的要求,如果处理图片过大的时候,可能会抛出 内存溢出 的异常问题。

对此的解决办法

1.可以加内存。(但不建议,因为用户传的图片有可能无限增大,而内存加到一定值就没办法了,因为这个办法可以为临时解决办法)

2.对于上传图片的入口进行拦截,在配置文件中配置文件上传的峰值,如果上传的文件大于这个峰值,就提示不能上传,要求传的图片大小降低。

3.优化压缩图片的代码。这个我目前就不知道了,以后有机会了来补充吧!

java 图片压缩不改变分辨率相关推荐

  1. java 图片压缩 图片添加水印 thumbnailator javafx

    应用截图 启动界面 添加图片 处理结果 项目地址 图片压缩: java 图片压缩 图片添加水印 thumbnailator javafx pom.xml <?xml version=" ...

  2. Java 图片压缩(Thumbnails)

    https://www.cnblogs.com/zhaosq/p/13896446.html Java 图片压缩(Thumbnails)

  3. java 图片压缩100k_Java 实现图片压缩的两种方法

    问题背景. 典型的情景:Nemo社区中,用户上传的图片免不了要在某处给用户做展示. 如用户上传的头像,那么其他用户在浏览该用户信息的时候,就会需要回显头像信息了. 用户上传的原图可能由于清晰度较高而体 ...

  4. java图片压缩不失真_软件分享 | Lit图片压缩

    软件分享 01 软件名称 Lit图片压缩 02 软件版本 V1.2.0.016 03 软件简介 Lit图片压缩app是一款免费简单好用的图片压缩工具,让图片在不失真的情况下,进行压缩和裁剪,轻松就能压 ...

  5. 解决java 图片压缩图片图片变色问题

    最近有人遇到在处理在用Java进行图片压缩的时候,压缩后图片的背景色发生了变色,如图所示: 压缩前: 压缩后: 经查阅相关资料后发现可以用阿里巴巴的SImpleImage可以解决这个问题. 主要依赖以 ...

  6. Java图片压缩大小,图片缩放

    添加依赖 <!-- 图片缩略图 --><dependency><groupId>net.coobird</groupId><artifactId& ...

  7. Java图片压缩并上传

    public void uploadFile(@RequestParam(value = "file", required = false)MultipartFile[] file ...

  8. java图片压缩(谷歌工具类)

    引入jar依赖 <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailato ...

  9. java 图片压缩100k_如何将图片压缩到100K以内,教你几种免费方法

    一般我们在提交电子证件照时都要求100K以内的图片,超过则无法正常上传,那么有没有免费将图片压缩变小的方法呢?教你3个简单又免费的方法,收藏起来备用吧. 方法1:最简单粗暴的方式就是直接打开图片后用聊 ...

最新文章

  1. Mysql 字符串分隔
  2. 大一写的C课程设计(图书馆管理系统)
  3. LiveVideoStackCon讲师热身分享 ( 八 ) —— FFmpeg的滤镜在视频编辑场景中的应用
  4. 图论--拓扑排序--判断是否为DAG图
  5. easyui combobox java_Easyui的combobox实现动态数据级联效果
  6. 美团酒店直连产品数据一致性演进
  7. 可应用于实际的14个NLP突破性研究成果(一)
  8. SecureRandom-随机数的生成
  9. java正则表达式tab_Linux下如何使用grep命令查找带有tab(退格)的字符
  10. the value of esp was not properly saved across a function call异常
  11. Python中的异常处理try、exception、raise
  12. linux下 添加一个新账户tom,linux 账户管理命令 useradd、groupadd使用方法
  13. 神器webssh学习笔记
  14. java odbc 驱动_Java java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
  15. MySQL_where条件查询
  16. 新手入门笔记——linux常用命令总结
  17. window.open在苹果手机上失效的问题
  18. node.js邮箱验证码
  19. Linux比较常用的终端快捷键使用
  20. 中国石油大学-《现代应用文写作》期末网考题

热门文章

  1. (gitee)gitee凭据配置
  2. RFID技术在物流分拣的应用
  3. 【STM32单片机学习】第一课:STM32那些你该知道的事儿
  4. OpenGL(五)多边形
  5. 2022年T电梯修理题库及模拟考试
  6. 微信支付服务端自动对账
  7. python文件的两种类型进制文件,Python之基于十六进制判断文件类型
  8. BDAC 2017中国大数据应用大会(成都)等您赴约!
  9. HTML+CSS 画三角形
  10. 游戏盾/游戏盾SDK介绍