Java:使用javax.imageio.ImageIO.read()加载没有索引的png图像(如BufferedImage.TYPE_4BYTE_ABGR)

时间:2011-04-16 12:35:56

标签: java bufferedimage javax.imageio

我正在尝试使用javax.imageio.ImageIO.read()方法加载PNG图像。但是,我希望结果类型为“BufferedImage.TYPE_4BYTE_ABGR”,但它最终会成为索引图像(“BufferedImage.TYPE_BYTE_INDEXED”)。当原始图像被编入索引时,有没有办法将图像加载为未编入索引?大约有120张图像,所以手动无需索引就需要很长时间。

1 个答案:

答案 0 :(得分:0)

如果您不反对使用JAI,可以为RenderedImage创建渲染链(BufferedImage实现接口)并向链中添加格式化操作:

JAI.create(“format”,...)操作,带有使用JAI.KEY_REPLACE_INDEX_COLOR_MODEL键的呈现提示。

纯ImageIO方法是创建所需类型的新BufferedImage,并将从ImageIO.read加载的那个绘制到新的BufferedImage中:

BufferedImage image = ImageIO.read(inputFile);
BufferedImage convertedImage = new BufferedImage(image.getWidth(), 
    image.getHeight(), BufferedImage.TYPE_4BYTE_ABRG);
convertedImage.createGraphics().drawRenderedImage(image, null);