[英]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.