Java:使用javax.imageio.ImageIO.read()加载未索引的png图像(如BufferedImage.TYPE_4BYTE_ABGR)。 [英] Java: Loading png images without indexing (as BufferedImage.TYPE_4BYTE_ABGR), using javax.imageio.ImageIO.read()

查看:186
本文介绍了Java:使用javax.imageio.ImageIO.read()加载未索引的png图像(如BufferedImage.TYPE_4BYTE_ABGR)。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用javax.imageio.ImageIO.read()方法加载PNG图像。但是,我希望结果类型为 BufferedImage.TYPE_4BYTE_ABGR,但最终以索引图像形式出现( BufferedImage.TYPE_BYTE_INDEXED)。在原始图像建立索引后,有什么方法可以将图像加载为未建立索引?大约有120张图像,因此要使它们全部都手动变索引将花费太长时间。

I am trying to load a PNG image using the javax.imageio.ImageIO.read() method. However, I want the resulting type to be "BufferedImage.TYPE_4BYTE_ABGR", but it ends up as an indexed image ("BufferedImage.TYPE_BYTE_INDEXED"). Is there any way to load an image as unindexed, when the original image is indexed? There are about 120 images, so it would take too long to make them all unindexed by hand.

推荐答案

相对于使用JAI,您可以为RenderedImage创建一个渲染链(BufferedImage实现该接口),然后向该链添加格式操作:

If you're not opposed to using JAI, you can create a rendering chain for the RenderedImage (BufferedImage implements the interface) and add a format operation to the chain:

JAI.create( format ,...)操作,并带有带有提示键JAI.KEY_REPLACE_INDEX_COLOR_MODEL的呈现提示。

JAI.create("format",...) operation with a rendering hint with a key of JAI.KEY_REPLACE_INDEX_COLOR_MODEL.

纯ImageIO方法是创建一个您所需要类型的新BufferedImage想要并将从ImageIO.read加载的图像绘制到新的BufferedImage中:

A pure-ImageIO approach would be to create a new BufferedImage of the type you want and draw the one loaded from ImageIO.read into the new BufferedImage:

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

这篇关于Java:使用javax.imageio.ImageIO.read()加载未索引的png图像(如BufferedImage.TYPE_4BYTE_ABGR)。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆