【问题标题】:Reading TIFF image from file using BufferedImage and JAI使用 BufferedImage 和 JAI 从文件中读取 TIFF 图像
【发布时间】:2012-01-02 09:24:44
【问题描述】:

我正在尝试使用 BufferedImage 从文件中读取 TIFF 图像。以下是我的代码:

String filename = "/image/parrot.tiff";
File f = new File (filename);
try{
        BufferedImage img = ImageIO.read(f);
}catch (Exception e){
        System.out.println("Something went wrong!");
}

但它不起作用。我有一个名为 testInput 的方法来测试文件是否被正确读取:

public void testInput(){
    System.out.println(f.exists());
    System.out.println(f.canRead());
    System.out.println(f.canWrite());
}*/

他们三个总是返回“false”,上面的代码总是返回“出错了!”。我已经为插件添加了 JAI ImageIO 来读取 TIFF 图像。知道似乎是什么问题吗?

【问题讨论】:

    标签: java tiff javax.imageio jai


    【解决方案1】:

    您需要确保您实际上已准备好 JAI。 JAI 是 ImageIO 的插件扩展,如果不存在,则无法解码 TIFF。这是一个快速的单元测试:

    @Test
    public void canGetTiffDecoder()
    {
        Iterator<ImageReader> reader = ImageIO.getImageReadersByFormatName("TIFF");
        assertNotNull(reader);
        assertTrue("No tiff decoder", reader.hasNext());
    }
    

    【讨论】:

      【解决方案2】:

      这可能看起来很傻,但是你确定你的文件放在了

      /image/parrot.tiff
      

      ?

      根据 Javadoc,exists() 返回:

      当且仅当此抽象路径名表示的文件或目录存在时为真;否则为假

      所以我认为路径可能是错误的。根据您的评论,我认为正确的路径应该是

      src/image/parrot.tiff
      

      如果不是,请尝试

      src/image/parrot.tiff
      

      在所有情况下,您都必须更好地了解 Java(以及大多数其他语言)中文件路径的管理方式;-)

      【讨论】:

      • 我的源文件都在一个名为“src”的文件夹中,在“src”中有一个名为“image”的文件夹,我将 parrot.tiff 放在其中。我还尝试将 parrot.tiff 放入 src 文件夹并将文件名更改为“parrot.tiff”,但它仍然不起作用。
      • 好的,我是对的。你的路径中有一个前导斜杠,你不应该。我编辑我的答案。
      • 我将其更改为:src/image/fig38a.tif,现在可以正常工作了。谢谢!
      【解决方案3】:

      使用什么格式的 tif 也很重要。即使使用 JAI 插件,也仅支持某些形式的 tiff。例如,当我下载 bluemarble.tif 图像时,我得到了深入的内部工作:

      原因:java.lang.RuntimeException:不支持平面(带序)格式 TIFF。

      因此,如果没有专门的库的帮助,某些 tif 文件格式将不受支持。这些库之一是 GDAL。 http://gdal.org/java/ 但是,许多支持库都需要本地代码,并且可能无法在可移植的纯 java 上下文中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多