作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个颜色索引 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);
没有异常(exception),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;
}
关于java - 如何在 Java 中将索引图像转换为 RGB 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586059/
我是一名优秀的程序员,十分优秀!