【tiff格式图片转换】Java处理工具
0、补充知识点
"TIFF(Tag Image File Format)图像文件是图形图像处理中常用的格式之一,其图像格式很复杂,但由于它对图像信息的存放灵活多变,可以支持很多色彩系统,而且独立于操作系统,因此得到了广泛应用。在各种地理信息系统、摄影测量与遥感等应用中,要求图像具有地理编码信息,例如图像所在的坐标系、比例尺、图像上点的坐标、经纬度、长度单位及角度单位等等。 它最初由 Aldus公司与微软公司一起为PostScript打印开发。
TIFF最初的设计目的是为了1980年代中期桌面扫描仪厂商达成一个公用的统一的扫描图像文件格式,而不是每个厂商使用自己专有的格式。在刚开始的时候, TIFF只是一个二值图像格式,因为当时的桌面扫描仪只能处理这种格式,随着扫描仪的功能越来越强大,并且计算机的磁盘空间越来越大,TIFF逐渐支持灰阶图像和彩色图像。"------引自百度百科
1、问题描述
在项目过程中需要将word文档中内容结构化转换导入业务表,其中有大量的图片内容需要上传和处理展示,但在页面富文本框tiff格式展示不出来,而且这种矢量图文件大小相对比较大,需要转换为png格式。
2、解决方案
2.1、jar依赖
<dependency> <groupId>javax.media.jai</groupId> <artifactId>com.springsource.javax.media.jai.core</artifactId> <version>1.1.3</version> </dependency>
2.2、代码处理
import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.io.File; import java.io.IOException; import javax.media.jai.JAI; public class Test { public static void tifToPng(String otPath) throws IOException { File tiff = new File(otPath); if (null != tiff && tiff.exists()) { String fileNameIgnore = tiff.getName().replaceAll("[.][^.]+$", ""); TIFFDecodeParam param0 = null; TIFFEncodeParam param = new TIFFEncodeParam(); JPEGEncodeParam param1 = new JPEGEncodeParam(); ImageDecoder dec = ImageCodec.createImageDecoder("tiff", tif, param0); int count = dec.getNumPages(); System.out.println("count:{}"+ count); param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4); param.setLittleEndian(false); for (int i = 0; i < count; i++) { RenderedImage page = dec.decodeAsRenderedImage(i); //设置转换后的png图片存储路径 StringBuffer pngPath = new StringBuffer(tiff.getParent()).append(File.separator).append(fileNameIgnore); if (count > 1) { pngPath.append("(").append(++i).append(")"); } pngPath.append(".png"); //png格式 File pngFile = new File(pngPath.toString()); ParameterBlock pb = new ParameterBlock(); pb.addSource(page); pb.add(pngFile.toString()); pb.add("JPEG"); pb.add(param1); JAI.create("filestore", pb); } } } public static void main(String[] args) throws IOException { tifToPng("/Users/xiayangyang/Downloads/tiff/f43a8585-3cf2-4cbb-9150-fb93c10e4f21image1.tiff"); } }