java 图片压缩不改变分辨率
转载: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 图片压缩不改变分辨率相关推荐
- java 图片压缩 图片添加水印 thumbnailator javafx
应用截图 启动界面 添加图片 处理结果 项目地址 图片压缩: java 图片压缩 图片添加水印 thumbnailator javafx pom.xml <?xml version=" ...
- Java 图片压缩(Thumbnails)
https://www.cnblogs.com/zhaosq/p/13896446.html Java 图片压缩(Thumbnails)
- java 图片压缩100k_Java 实现图片压缩的两种方法
问题背景. 典型的情景:Nemo社区中,用户上传的图片免不了要在某处给用户做展示. 如用户上传的头像,那么其他用户在浏览该用户信息的时候,就会需要回显头像信息了. 用户上传的原图可能由于清晰度较高而体 ...
- java图片压缩不失真_软件分享 | Lit图片压缩
软件分享 01 软件名称 Lit图片压缩 02 软件版本 V1.2.0.016 03 软件简介 Lit图片压缩app是一款免费简单好用的图片压缩工具,让图片在不失真的情况下,进行压缩和裁剪,轻松就能压 ...
- 解决java 图片压缩图片图片变色问题
最近有人遇到在处理在用Java进行图片压缩的时候,压缩后图片的背景色发生了变色,如图所示: 压缩前: 压缩后: 经查阅相关资料后发现可以用阿里巴巴的SImpleImage可以解决这个问题. 主要依赖以 ...
- Java图片压缩大小,图片缩放
添加依赖 <!-- 图片缩略图 --><dependency><groupId>net.coobird</groupId><artifactId& ...
- Java图片压缩并上传
public void uploadFile(@RequestParam(value = "file", required = false)MultipartFile[] file ...
- java图片压缩(谷歌工具类)
引入jar依赖 <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailato ...
- java 图片压缩100k_如何将图片压缩到100K以内,教你几种免费方法
一般我们在提交电子证件照时都要求100K以内的图片,超过则无法正常上传,那么有没有免费将图片压缩变小的方法呢?教你3个简单又免费的方法,收藏起来备用吧. 方法1:最简单粗暴的方式就是直接打开图片后用聊 ...
最新文章
- Mysql 字符串分隔
- 大一写的C课程设计(图书馆管理系统)
- LiveVideoStackCon讲师热身分享 ( 八 ) —— FFmpeg的滤镜在视频编辑场景中的应用
- 图论--拓扑排序--判断是否为DAG图
- easyui combobox java_Easyui的combobox实现动态数据级联效果
- 美团酒店直连产品数据一致性演进
- 可应用于实际的14个NLP突破性研究成果(一)
- SecureRandom-随机数的生成
- java正则表达式tab_Linux下如何使用grep命令查找带有tab(退格)的字符
- the value of esp was not properly saved across a function call异常
- Python中的异常处理try、exception、raise
- linux下 添加一个新账户tom,linux 账户管理命令 useradd、groupadd使用方法
- 神器webssh学习笔记
- java odbc 驱动_Java java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
- MySQL_where条件查询
- 新手入门笔记——linux常用命令总结
- window.open在苹果手机上失效的问题
- node.js邮箱验证码
- Linux比较常用的终端快捷键使用
- 中国石油大学-《现代应用文写作》期末网考题