java+图片高保真压缩_java对图片进行“高保真”压缩
应项目需要,对上传的商品图片进行压缩处理,且必须要保证原图片的高保真显示效果。
于是网上down资料,找到其中效果最好的一种方法,供大家使用和学习:
代码如下:
package com.hhsj.demo; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class ImageCompress2 { /** * @param im * 原始图像 * @param resizeTimes * 倍数,比如0.5就是缩小一半,0.98等等double类型 * @return 返回处理后的图像 */ public BufferedImage zoomImage(String src) { BufferedImage result = null; try { File srcfile = new File(src); if (!srcfile.exists()) { System.out.println("文件不存在"); } BufferedImage im = ImageIO.read(srcfile); /* 原始图像的宽度和高度 */ int width = im.getWidth(); int height = im.getHeight(); //压缩计算 float resizeTimes = 0.3f; /*这个参数是要转化成的倍数,如果是1就是转化成1倍*/ /* 调整后的图片的宽度和高度 */ int toWidth = (int) (width * resizeTimes); int toHeight = (int) (height * resizeTimes); /* 新生成结果图片 */ result = new BufferedImage(toWidth, toHeight, BufferedImage.TYPE_INT_RGB); result.getGraphics().drawImage( im.getScaledInstance(toWidth, toHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null); } catch (Exception e) { System.out.println("创建缩略图发生异常" + e.getMessage()); } return result; } public boolean writeHighQuality(BufferedImage im, String fileFullPath) { try { /*输出到文件流*/ FileOutputStream newimage = new FileOutputStream(fileFullPath); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage); JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(im); /* 压缩质量 */ jep.setQuality(0.9f, true); encoder.encode(im, jep); /*近JPEG编码*/ newimage.close(); return true; } catch (Exception e) { return false; } } public static void main(String[] args) { String inputFoler = "D:\\img.jpg" ; /*这儿填写你存放要缩小图片的文件夹全地址*/ String outputFolder = "D:\\newImg.jpg"; /*这儿填写你转化后的图片存放的文件夹*/ ImageCompress2 narrowImage = new ImageCompress2(); narrowImage.writeHighQuality(narrowImage.zoomImage(inputFoler), outputFolder); } }
java+图片高保真压缩_java对图片进行“高保真”压缩相关推荐
- java 文件压缩_java实现文件压缩
java实现文件压缩:主要是流与流之间的传递 代码如下: package com.cst.klocwork.service.zip; import java.io.File; import java. ...
- java mp3文件压缩_java实现文件压缩
java实现文件压缩:主要是流与流之间的传递 代码如下: package com.cst.klocwork.service.zip; import java.io.File; import java. ...
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...
- java gzip压缩_Java GZIP示例–压缩和解压缩文件
java gzip压缩 Welcome to Java GZIP example. GZIP is one of the favorite tool to compress file in Unix ...
- 使用react-cropper结合图片压缩方法对图片进行裁剪压缩处理
最近项目要使用图片裁剪上传,因为项目采用的是react+antd,所以第一时间想到的是ImgCrop插件,但是这不满足项目需求,项目要求的是能够缩放裁剪框,最后确定了采用react-cropper来实 ...
- java 图片 内存溢出_Java修改图片尺寸,总是报内存溢出怎么解决?
项目需求:有很多尺寸很大的图片(图片大小可能几十MB,甚至上百MB),需要等比例缩小它们的尺寸,相当于生成缩略图. 例如:原图8268x6201,需要压缩成400x300. 我现在的方法:将图片整个读 ...
- java 图片传输方式_Java图像传输方法
在研发B/S视频系统时候涉及到了图片在网络中的传输,研究了一些资料,也积累了部分经验: 一.序列化后传输 图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存.但是除了这样还有 ...
- java 图片上传_java web图片上传和文件上传实例
本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...
- java图片转字符_java实现图片转字符图(看的过去的亚子)
普通图片转换为ASSIC码灰度图片 原图: 效果图: 转换方法 读取图片文件到BufferedImage 读取BufferedImage中的RGB值 将RGB三色值按照(0.3,0.59,0.11)权 ...
- java 图片相似搜索_java获取两张图片的相似度
package com.sinosoft.lis.utils; import java.awt.Graphics2D; import java.awt.color.ColorSpace; import ...
最新文章
- 高房价可控制人口增长与人口素质?
- postgresql_PostgreSQL开放自由
- scala 当前日期_如何在Scala中检查当前日期和时间?
- python流程自动化_基于Python的SAP流程自动化
- 计算机在材料科学与工程中的应用,计算机在材料科学与工程中的应用
- app闪退后重启_安卓APP崩溃(crash)后重新启动,捕获全局异常重启APP
- Ubuntu解决依赖关系问题
- tensorflow2 serving
- 第二章 核心动画渲染框架
- 2022 极术通讯-搭载安谋科技“星辰”STAR-MC1处理器的上海航芯ACM32磁链观测器算法方案
- Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-长连接超低功耗方案
- 腾讯地图只显示某一区域,覆盖图,marker自定义图标和文本标注
- 乔治·布尔二百周年:数理逻辑奠基者其人其事
- Python输出菱形图案
- java数组下标异常越界程序,Java程序运行时会自动检查数组的下标是否越界,如果越界,会抛出下面的哪一个异常?...
- [PCIe]LTSSM与电源管理
- 常用公共类代码一之数据库的连接
- conda install -y 参数
- 离散数学__第2章命题逻辑的推理理论__析取范式和合取范式
- 计算机技术在中医药中的应用,计算机药物虚拟筛选技术在中医药领域中的应用前景...
热门文章
- 无线网卡驱动正常却搜索不到无线信号
- 数字键盘(触屏键盘)
- IDEA部署web项目时,Artifact中war和war exploded的区别
- 计算机导论.mobi,计算思维:计算学科导论
- 基于networkx的《人民的名义》人物关系图
- c语言父子线程交替打印,多线程面试题之【三线程按顺序交替打印ABC的方法】...
- Oracle中to_date函数用法
- [应用广播], 一览华夏文化,诗词三万首震撼上线
- MySQL数据库--韩顺平老师课
- 利用Oh-My-Zsh打造你的超级终端