读取14位和16位图像

时间:2012-08-21 11:34:44

标签: java apache bufferedimage

我尝试通过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

1 个答案:

答案 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();

谢谢!!