我尝试通过1或3个通道(灰度或RGB)读取(在BufferedImage
中) 14或16位图像。我精确地说,这个图像的每个颜色分量都存储在14或16位。
我的代码(使用Apache Sanselan / Imaging)读取图像,但每个颜色分量被截断为8位。
File f = new File("/tmp/a.tiff");
Map<String, ManagedImageBufferedImageFactory> params =
new HashMap<String, ManagedImageBufferedImageFactory>();
params.put(ImagingConstants.BUFFERED_IMAGE_FACTORY,
new ManagedImageBufferedImageFactory());
BufferedImage image = Imaging.getBufferedImage(file, params);
你能给我一个代码片段吗?我被困了6个小时,谷歌不想帮助我:-p
答案 0 :(得分:1)
好的!我自己关闭了我的问题:-P
我终于找到了一罐Java Advanced Imaging。 JAI解决了我的问题。
以下代码能够为每个组件加载任意数量组件的TIFF或BMP图像。
RenderedOp op = JAI.create("fileload", filename);
// gets the number of channels (R / RGB / RGBA)
channels = op.getColorModel().getNumColorComponents();
// gets the depth of each component (16 16 16)
depth = new int[channels];
for(int i=0; i<op.getColorModel().getNumColorComponents(); i++)
{
depth[i] = op.getColorModel().getComponentSize(i);
}
// gets the BufferedImage
image = op.getAsBufferedImage();
谢谢!!