繁体   English   中英

如何在Java中将索引图像转换为RGB图像?

[英]How to convert an indexed image to a RGB image in Java?

我有一个彩色索引的TIFF图像(8位),我想将其转换为RGB 24位图像(未索引)。 这样做的方式是什么?

我正在使用JMagick。 以一种怪异的方式,当我使用灰度级索引的8位图像时,它工作得很好:

image.transformRgbImage(info.getColorspace());

即使该图像不再索引,但此后仍为8位,这是幸运的,因为它是灰度图像,实际上应该是8位。 奇怪的是,transformRgbImage()会执行该操作,尽管我希望它可以将图像转换为24位图像。 无论如何...

相同的方法不适用于彩色索引的8位图像。 我只是不知道如何使用JMagick API来实现该目标。 我尝试设置:

image.setDepth(24);

要么:

info.setDepth(24);

但两者都会导致EXCEPTION_ACCESS_VIOLATION。 当我设定时:

info.setDepth(32);

不会引发异常,1)但是图像是32位(不应该这样),并且2)全部为黑色(1种唯一颜色)。 为什么setDepth(24)会引发这样的异常? 我应该怎么做?

在此先感谢您的帮助。

我不了解jmagick,但是通常一旦创建了图像对象,其属性就会固定(大小和颜色模型)。

您无需更改图像属性,而是使用所需的目标属性创建图像,然后将原始图像绘制到新图像中。 在普通核心Java中,您可以像这样简单地进行操作:

public BufferedImage toRGB(Image i) {
    BufferedImage rgb = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_RGB);
    rgb.createGraphics().drawImage(i, 0, 0, null);
    return rgb;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM