0

我尝试通过 1 或 3 个通道(灰度或 RGB)读取(在 a 中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

4

1 回答 1

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

谢谢 !!

于 2012-08-22T21:12:21.483 回答