将多页TIFF图像拆分为单个图像(Java)

aio*_*obe 12 java tiff

在这一个上撕裂了我的头发.

如何将多页/多层TIFF图像分割成多个单独的图像?

这里有演示图片.

(更喜欢纯Java(即非本机)解决方案.如果解决方案依赖于商业库,则无关紧要.)

小智 22

您可以使用Java高级图像JAI通过使用ImageReader来分割多个TIFF:

ImageInputStream is = ImageIO.createImageInputStream(new File(pathToImage));
if (is == null || is.length() == 0){
  // handle error
}
Iterator<ImageReader> iterator = ImageIO.getImageReaders(is);
if (iterator == null || !iterator.hasNext()) {
  throw new IOException("Image file format not supported by ImageIO: " + pathToImage);
}
// We are just looking for the first reader compatible:
ImageReader reader = (ImageReader) iterator.next();
iterator = null;
reader.setInput(is);
Run Code Online (Sandbox Code Playgroud)

然后你可以得到页数:

nbPages = reader.getNumImages(true);
Run Code Online (Sandbox Code Playgroud)

并分别阅读页面:

reader.read(numPage)
Run Code Online (Sandbox Code Playgroud)

  • 实际上,关于你发布的代码的一个好处是它在编译时甚至不需要JAI,并且JAI可能在运行时替换另一个TIFF插件.:-) (2认同)