import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class ImagingIssue { public static void main(String[] args) throws Exception { ImageIO.scanForPlugins(); Thread.sleep(10000); final File inputFile = new File("/home/vinayb/Downloads/gs/img/page.tif"); //doesn't work // final File inputFile = new File("/home/vinayb/Downloads/gs/img/trump.tif"); //works final File outputFile = new File("/home/vinayb/Downloads/gs/img/out.tif"); if (outputFile.exists()) { outputFile.delete(); } final OutputStream outputStream = new FileOutputStream(outputFile); final BufferedImage inputImage = ImageIO.read(inputFile); //========> fails here final BufferedImage outputImage = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), inputImage.getType()); final Graphics2D g = outputImage.createGraphics(); g.drawImage(inputImage, null, null); ImageIO.write(outputImage, "tif", outputStream); inputImage.flush(); outputImage.flush(); outputStream.close(); g.dispose(); } }