java TIFF转JPG并压缩
jdk1.5之前的不支持PNG格式的图片,之后支持,下面先来一个传进文件传出文件方式的:
public static void main(String[] args) { if(compressPic("D:/Program Files/myftp/1.tif", "D:/Program Files/myftp/ssss.jpg")) { System.out.println("压缩成功!"); } else { System.out.println("压缩失败!"); } } public static boolean compressPic(String srcFilePath, String descFilePath) { File file = null; BufferedImage src = null; FileOutputStream out = null; ImageWriter imgWrier; ImageWriteParam imgWriteParams; // 指定写图片的方式为 jpg imgWrier = ImageIO.getImageWritersByFormatName("jpg").next(); imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null); // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT); // 这里指定压缩的程度,参数qality是取值0~1范围内, imgWriteParams.setCompressionQuality((float)0.1); imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED); ColorModel colorModel = ColorModel.getRGBdefault(); // 指定压缩时使用的色彩模式 imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel, colorModel .createCompatibleSampleModel(16, 16))); try { if(StringUtils.isBlank(srcFilePath)) { return false; } else { file = new File(srcFilePath); src = ImageIO.read(file); out = new FileOutputStream(descFilePath); 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(); } } catch(Exception e) { e.printStackTrace(); return false; } return true; }
下面是传进byte[],传出byte[]数组的,稍微修改即可即可,(data为传过来的byte[]数组)
ByteArrayInputStream is = new ByteArrayInputStream(data); BufferedImage src = null;
ByteArrayOutputStream out = null;
ImageWriter imgWrier;
ImageWriteParam imgWriteParams; // 指定写图片的方式为 jpg
imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null);
// 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
// 这里指定压缩的程度,参数qality是取值0~1范围内,
imgWriteParams.setCompressionQuality((float)0.1/data.length); imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel colorModel = ColorModel.getRGBdefault();
// 指定压缩时使用的色彩模式
imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel, colorModel .createCompatibleSampleModel(16, 16))); try
{ src = ImageIO.read(is); out = new ByteArrayOutputStream(data.length); 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(); is.close(); data = out.toByteArray();
}
catch(Exception e)
{ e.printStackTrace();
}
转载链接:http://fandayrockworld.iteye.com/blog/628551
java TIFF转JPG并压缩相关推荐
- java图片的导出,并压缩
java图片的导出,并压缩 java 压缩包jar包使用的是commons-compress-1.6.jar /*** 导出图片* @param request* @param response*/@ ...
- java 解压到内存,Java GZip 基于内存实现压缩和解压的方法
欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...
- java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现gzip压缩解压缩byte[]字节数组,文件,字符串. 测试代码 public static void main(String[] a ...
- Java导出多个excel压缩成zip下载
Java导出多个excel压缩成zip下载 maven <!--hutoos工具类根据需要可以导入不同的模块,我这里是导入全部的模块--><dependency><gro ...
- java高清无损图片压缩
Java高清无损图片压缩 (本文禁止转载,如需转载请联系本人:微信/QQ同号:969987665) 简单介绍 thumbnailator-0.4.5.jar 官方下载网址 语法使用(超级简单的,再也没 ...
- java实现对pdf文件压缩,拆分,修改水印,添加水印
最近要实现一个文件上传,并且在线预览上传文件的功能,设计思路是:把上传的文件通过openoffice转成pdf文件,并将pdf文件以流的形式返回到浏览器,由于上传的部分文件过大,转成pdf后传回前端浏 ...
- Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理
Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理 一.thumbnailator介绍 二.使用步骤 1.maven的pom.xml引入如下 2.测试代码 一.thumbnaila ...
- java对gzip格式进行压缩与解压缩
java对gzip格式进行压缩和解压缩 对gzip格式字符串进行解压缩 public static String unzip(String compressedStr){ if(compressedS ...
- [Java]还在用360压缩吗?自己写一个吧
Java中的I/O支持读写压缩格式的数据流,我们可以对其进行封装以达到压缩和解压缩的目的. 这些类并不是从Reader.Writer继承来的,而是属于InputStream.OutputStream继 ...
- JAVA对象头的指针压缩
JAVA对象头的指针压缩 文章目录 JAVA对象头的指针压缩 对象在JVM中的内存布局 对象的访问定位 压缩实验 实验步骤 压缩策略组合 压缩内容 压缩后的影响 指针压缩的实现 JVM内存关键大小 对 ...
最新文章
- Django博客系统项目需求分析
- Thrift架构~thrift中间语言的认识(只有它什么都不是,它才有可能什么都是)
- CTFshow php特性 web104
- python单元测试之unittest框架使用
- mysql5.7.25数据库安装
- AQS理解之二,自己设计一个锁
- raspberry pi 家族
- Beta版本测试报告
- unubtu16.04解决etc文件误改导致无法使用sudo等指令问题
- 微信小程序入门一:点击事件
- php上传文件表单,php中关于普通表单多文件上传的处理方法
- 文本显示变量_易标签使用Excel数据实现批量打印变量数据
- Perl文件内容对比
- Windows Server 2012安装密钥
- 大学生创新创业训练计划项目申请书
- 最大子段和问题【思路及实现】
- C++ 面向对象的编程语言有哪些特点?
- 进入BeOS的花花世界 系列七
- 【专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码
- Android 热修复原理篇及几大方案比较