Java 使用JAI读取TIFF文件

Java 使用JAI读取TIFF文件,java,tiff,javax.imageio,jai,Java,Tiff,Javax.imageio,Jai,我的目标是修改TIFF文件。我尝试使用ImageIO读取文件。尝试获取TIFF文件的ImageReader会导致NoTouchElementException。这是我的密码: Iterator iterator = ImageIO.getImageReadersByFormatName("tiff"); // Next code string throws java.util.NoSuchElementException ImageReader reader = (ImageReader) it

我的目标是修改TIFF文件。我尝试使用ImageIO读取文件。尝试获取TIFF文件的ImageReader会导致NoTouchElementException。这是我的密码:

Iterator iterator = ImageIO.getImageReadersByFormatName("tiff");
// Next code string throws java.util.NoSuchElementException
ImageReader reader = (ImageReader) iterator.next();
ImageInputStream is = null;

try {
    is = new FileImageInputStream(new File(sourceFilePath));
    reader.setInput(is, false, true);
    int pageNum = reader.getNumImages(true);
    System.out.println(pageNum);
} catch (Exception e) {
    e.printStackTrace();
}

如果您能在这个问题上提供帮助,我将不胜感激。

要使此代码在没有JAI安装的情况下工作,JAR文件
JAI_core.JAR
JAI_codec.JAR
JAI_imageio.JAR
应该添加到类路径中。下载连结:


我发现之前的一篇帖子可以帮助您:您使用的是什么版本的JAI?验证您的JAI安装。确保在运行时(在类路径上)已安装并可访问
jai imageio.jar(或类似文件)。该异常表示您没有TIFF的读卡器,这再次表明您没有可用的JAI。你的代码没有问题。嗨@haraldK!我用的是JAI 1.1.3。我已经下载了jai_core.jar和jai_codec.jar,并将它们设置在我的eclipse项目构建路径中。不应进行其他安装,因为此代码应部署在客户端服务器上,而我没有访问权限和rghts在其上进行安装。@Victor AFAIK,除非您还安装了jai_imageio.jar
,jai imageio插件(包括
TIFFImageReader
TIFFImageWriter
)将不可用。@haraldK谢谢!我在项目构建路径中添加了
jai_imageio.jar
,问题就解决了。我花了很多时间才找到下载JAR文件的链接,而没有实际安装JAI。这个问题的答案中提到了链接。这个问题没有maven依赖性吗?@mmcrae这是一个非常痛苦的遗留项目的小补丁,没有使用maven
small patch for一个非常痛苦的遗留项目
heh听起来就像我们现在正在做的一样……我可以验证这个答案即使在Java 8上也仍然有效2020年+1年。