0

1または3チャネル(グレースケールまたはRGB)で14ビットまたは16ビットBufferedImageの画像を(で)読み取ろうとします。正確には、この画像の各色成分は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時間立ち往生していて、Googleは私を助けたくありません:-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 に答える