JAVA读取tiff文件,转换为单张或多张png格式图片(亲测实用)

最近遇到一个需求,需要把扩展名为.tif的文件转为png图片。至于什么是tiff,可以点击tiff介绍查看。
很多tiff转png的代码,有的是只能转一张png,有的是转成png后图片很大(一张png图片就高达6M),这些显然都不能满足需求。
最后,以下这段代码实现了我的需求。代码如下:

import com.sun.media.jai.codec.*; import javax.media.jai.JAI; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.io.File; import java.io.IOException; public class Test { public static void tifToPng(File tif) throws IOException { if (null != tif && tif.exists()) { //获取tif文件不带后缀的文件名 String fileNameIgnore = tif.getName().replaceAll("[.][^.]+$", ""); TIFFDecodeParam param0 = null; TIFFEncodeParam param = new TIFFEncodeParam(); JPEGEncodeParam param1 = new JPEGEncodeParam(); ImageDecoder dec = ImageCodec.createImageDecoder("tiff", tif, param0); int count = dec.getNumPages(); param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4); param.setLittleEndian(false); System.out.println(tif.getName() + "文件含有" + count + "张图片"); for (int i = 0; i < count; ) { RenderedImage page = dec.decodeAsRenderedImage(i); //转换后的png图片存储路径,这里设置为tif同级目录。可根据需要修改 StringBuffer pngPath = new StringBuffer(tif.getParent()).append(File.separator).append(fileNameIgnore); if (count > 1) { pngPath.append("(").append(++i).append(")"); //大于一张,用(1),(2)...区分 } pngPath.append(".png"); //png格式 File pngFile = new File(pngPath.toString()); System.out.println("转换后png图片路径:" + pngFile.getCanonicalPath()); ParameterBlock pb = new ParameterBlock(); pb.addSource(page); pb.add(pngFile.toString()); pb.add("JPEG"); pb.add(param1); JAI.create("filestore", pb); } } } }

【JAVA读取tiff文件,转换为单张或多张png格式图片(亲测实用)】代码亲测有效,转换后的png图片只有200K左右,如果你也有同样的需求,希望这篇文章可以帮助到你~
如有不足之处欢迎斧正

    推荐阅读