I am having issues converting a png to tiff. The conversion goes fine, but the image is huge. I think the issue is that I am not doing the compression correctly? Anyone have any suggestions??
Here is the code sample
public static void test() throws IOException { // String fileName = '4958813_1'; String fileName = '4848970_1'; String inFileType = '.PNG'; String outFileType = '.TIFF'; ImageIO.scanForPlugins(); File fInputFile = new File('I:/HPF/UU/' + fileName + inFileType); InputStream fis = new BufferedInputStream(new FileInputStream( fInputFile)); PNGImageReaderSpi spi = new PNGImageReaderSpi(); ImageReader reader = spi.createReaderInstance(); ImageInputStream iis = ImageIO.createImageInputStream(fis); reader.setInput(iis, true); BufferedImage bi = reader.read(0); TIFFImageWriterSpi tiffspi = new TIFFImageWriterSpi(); ImageWriter writer = tiffspi.createWriterInstance(); //Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName('TIFF'); //ImageWriter writer = iter.next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionType('LZW'); param.setCompressionQuality(0.5f); File fOutputFile = new File('I:\\HPF\\UU\\' + fileName + outFileType); ImageOutputStream ios = ImageIO.createImageOutputStream(fOutputFile); writer.setOutput(ios); writer.write(bi); }
Writer.getDefaultWriteParam()only creates anImageWriteParamobject, it doesn’t link it back to anything else.I don’t see any mechanism in your code for your modified
paramobject to be subsequently used in theImageWriter.I believe that instead of:
you need to use: