读取 TIFF 并输出 BMP 的最简单方法是使用 ImageIO 类:
BufferedImage image = ImageIO.read(inputFile);
ImageIO.write(image, "bmp", new File(outputFile));
要使其正常工作,您需要做的唯一额外的事情是确保您已将 JAI ImageIO JAR 添加到您的类路径中,因为如果没有此库中的插件,JRE 不会处理 BMP 和 TIFF。
如果您由于某种原因无法使用 JAI ImageIO,您可以让它与您现有的代码一起使用,但您必须做一些额外的工作。为您加载的 TIFF 创建的颜色模型可能是 BMP 不支持的索引颜色模型。您可以通过提供带有 JAI.KEY_REPLACE_INDEX_COLOR_MODEL 键的渲染提示,将其替换为 JAI.create("format",...) 操作。
您可能会幸运将从文件中读取的图像写入临时图像,然后写出临时图像:
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() 可以巧妙地为您提供你想要什么。