Самый простой способ чтения в формате TIFF и вывода BMP - использовать класс ImageIO:
BufferedImage image = ImageIO.read(inputFile);
ImageIO.write(image, "bmp", new File(outputFile));
Единственное, что вам нужно сделать, чтобы это работало, - это убедиться, что вы добавили JAR ImageIO JAR в ваш classpath, поскольку BMP и TIFF не обрабатываются JRE без плагинов из этой библиотеки.
Если по какой-то причине вы не можете использовать JAI ImageIO, вы можете настроить его для работы с существующим кодом, но вам придется проделать дополнительную работу. Цветовая модель, создаваемая для загружаемого файла TIFF, вероятно, является индексированной цветовой моделью, которая не поддерживается BMP. Вы можете заменить его операцией JAI.create ("format", ...), предоставив подсказку рендеринга с ключом JAI.KEY_REPLACE_INDEX_COLOR_MODEL.
Возможно, вам повезет: вы записываете изображение, прочитанное из файла, во временное изображение, а затем записываете временное изображение:
BufferedImage image = ImageIO.read(inputFile);
BufferedImage convertedImage = new BufferedImage(image.getWidth(),
image.getHeight(), BufferedImage.TYPE_INT_RGB);
convertedImage.createGraphics().drawRenderedImage(image, null);
ImageIO.write(convertedImage, "bmp", new File(outputFile));
Мне интересно, сталкиваетесь ли вы с той же проблемой цветовой модели индекса, что и с обычным JAI. В идеале вы должны использовать класс ImageIO, чтобы получить экземпляры ImageReader и ImageWriter для всех случаев, кроме самых простых, чтобы можно было соответствующим образом настроить параметры чтения и записи, но можно использовать ImageIO.read () и .write (), чтобы дать вам что ты хочешь.