diff --git a/components/formats-gpl/src/loci/formats/in/NDPIReader.java b/components/formats-gpl/src/loci/formats/in/NDPIReader.java index 4b3611b2412..505df562974 100644 --- a/components/formats-gpl/src/loci/formats/in/NDPIReader.java +++ b/components/formats-gpl/src/loci/formats/in/NDPIReader.java @@ -169,7 +169,14 @@ public byte[] openCompressedBytes(int no, byte[] buf, int x, int y) throws Forma IFD ifd = ifds.get(ifdIndex); if (useTiffParser(ifd)) { - return copyTile(ifd, buf, x, y); + try (RandomAccessInputStream s = new RandomAccessInputStream(currentId)) { + tiffParser = new TiffParser(s); + tiffParser.setUse64BitOffsets(true); + return copyTile(ifd, buf, x, y); + } + finally { + tiffParser.getStream().close(); + } } if (initializedSeries != getCoreIndex() || initializedPlane != no) { @@ -352,8 +359,7 @@ public int getOptimalTileWidth() { IFD ifd = ifds.get(ifdIndex); try { if (useTiffParser(ifd)) { - // TODO: - return 1024; + return (int) ifd.getTileWidth(); } if (initializedSeries != getCoreIndex() || initializedPlane != no) { @@ -379,8 +385,7 @@ public int getOptimalTileHeight() { IFD ifd = ifds.get(ifdIndex); try { if (useTiffParser(ifd)) { - // TODO: - return 1024; + return (int) ifd.getTileLength(); } if (initializedSeries != getCoreIndex() || initializedPlane != no) {