package com.xyz; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; public class TifReader { public static void main(String[] args) throws IOException { convertTiffToPng("ERROR.tif", true); convertTiffToPng("ERROR.tif", false); } public static void convertTiffToPng(String filename, Boolean isWhiteBackground) throws IOException { File file = new File(filename); ImageInputStream input = ImageIO.createImageInputStream(file); try { Iterator readers = ImageIO.getImageReaders(input); if (!readers.hasNext()) { throw new IllegalArgumentException("No reader for: " + file); } ImageReader reader = readers.next(); try { reader.setInput(input); ImageReadParam param = reader.getDefaultReadParam(); BufferedImage image = reader.read(0, param); if (isWhiteBackground) { image = setImageBackgroundToWhite(image); File outputfile = new File("images/tif-read-with-background.jpg"); ImageIO.write(image, "jpg", outputfile); } else { File outputfile = new File("images/tif-read-without-background.jpg"); ImageIO.write(image, "jpg", outputfile); File outputfile2 = new File("images/tif.tif"); ImageIO.write(image, "tif", outputfile2); } } finally { reader.dispose(); } } finally { input.close(); } } private static BufferedImage setImageBackgroundToWhite(BufferedImage imBuff) { int width = imBuff.getWidth(); int height = imBuff.getHeight(); BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = newImage.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); g.drawRenderedImage(imBuff, null); g.dispose(); System.out.println("Setting background color ok!"); return newImage; } }