java - 读取14位和16位图像

标签 java apache bufferedimage

我尝试(在 BufferedImage 中)读取 1 或 3 个 channel 的 14 或 16 位图像(灰度或 RGB)。准确地说,该图像的每个颜色分量都存储在 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

最佳答案

好的!我自己结束我的问题:-P

我终于找到了一 jar 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();

谢谢!!

关于java - 读取14位和16位图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053942/

相关文章:

java - 如何将S3ObjectInputStream转换为Base64 url​​?

java - 从具有颜色强度的双数组创建图像

java - 将 Java Math.random 转换为 Swift 4

Javamail 从 Gmail 获取抄送

java - JTextPane 将值从数组打印到 Java Swing 应用程序时出现问题

Apache 服务器无法在 CentOS 上启动

Apache 2.4.7 重写规则

java - 在 Tomcat 7 上部署 War 错误

PHP DateTime getTimestamp 不适用于 1901 年 12 月 13 日之前的时间

java - 带有底层图像的图形的清晰部分