final TiffReader reader = new TiffReader(); try { reader.setId(id.getAbsolutePath());
@Test(dataProvider = "nonTiling") public void testSaveBytes(int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { if (percentageOfSaveBytesTests == 0) return; File tmp = File.createTempFile("tiffWriterTest", ".tiff"); tmp.deleteOnExit(); Plane originalPlane = WriterUtilities.writeImage(tmp, tileSize, littleEndian, interleaved, rgbChannels, seriesCount, sizeT, compression, pixelType, bigTiff); TiffReader reader = new TiffReader(); reader.setId(tmp.getAbsolutePath()); WriterUtilities.checkImage(reader, originalPlane, interleaved, rgbChannels, seriesCount, sizeT, compression); tmp.delete(); reader.close(); }
@Test(dataProvider = "nonTiling") public void testSaveBytes(int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { if (percentageOfSaveBytesTests == 0) return; File tmp = File.createTempFile("OMETiffWriterTest", ".ome.tiff"); tmp.deleteOnExit(); Plane originalPlane = WriterUtilities.writeImage(tmp, tileSize, littleEndian, interleaved, rgbChannels, seriesCount, sizeT, compression, pixelType, bigTiff); TiffReader reader = new TiffReader(); reader.setId(tmp.getAbsolutePath()); WriterUtilities.checkImage(reader, originalPlane, interleaved, rgbChannels, seriesCount, sizeT, compression); tmp.delete(); reader.close(); }
/** * @see loci.formats.IFormatReader#openBytes(int, byte[], int, int, int, int) */ @Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); int n = no; for (int i=0; i<getSeries(); i++) { n += core.get(i).imageCount; } if (tiffReaders.length == 1) { return tiffReaders[0].openBytes(n, buf, x, y, w, h); } int plane = 0; if (tiffReaders[0].getImageCount() > 1) { n /= tiffReaders.length; plane = n % tiffReaders.length; } if (lastPlane != 0) { tiffReaders[lastPlane].close(); } lastPlane = n; tiffReaders[n].setId(tiffs.get(n)); return tiffReaders[n].openBytes(plane, buf, x, y, w, h); }
/** * Performs re-compression post processing on the pixel pyramid. * @throws IOException * @throws FormatException */ protected void postProcess() throws IOException, FormatException { TiffReader reader = new TiffReader(); try { reader.setId(currentId); // First we want to re-compress resolution level 0 (the source series, // with resolution levels exposed, are in reverse order). recompressSeries(reader, 1); // Second we want to re-compress resolution level 1 (the source series, // with resolution levels exposed, are in reverse order). recompressSeries(reader, 2); } finally { reader.close(); } }
/** * @see loci.formats.IFormatReader#openBytes(int, byte[], int, int, int, int) */ @Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); int n = no; for (int i=0; i<getSeries(); i++) { n += core.get(i).imageCount; } if (tiffReaders.length == 1) { return tiffReaders[0].openBytes(n, buf, x, y, w, h); } int plane = 0; if (tiffReaders[0].getImageCount() > 1) { n /= tiffReaders.length; plane = n % tiffReaders.length; } if (lastPlane != 0) { tiffReaders[lastPlane].close(); } lastPlane = n; tiffReaders[n].setId(tiffs.get(n)); return tiffReaders[n].openBytes(plane, buf, x, y, w, h); }
private RandomAccessInputStream getCZTag(IFD ifd) throws FormatException, IOException { // get TIF_CZ_LSMINFO structure short[] s = ifd.getIFDShortArray(ZEISS_ID); if (s == null) { LOGGER.warn("Invalid Zeiss LSM file. Tag {} not found.", ZEISS_ID); TiffReader reader = new TiffReader(); reader.setId(getLSMFileFromSeries(getSeries())); core.set(getSeries(), reader.getCoreMetadataList().get(0)); reader.close(); return null; } byte[] cz = new byte[s.length]; for (int i=0; i<s.length; i++) { cz[i] = (byte) s[i]; } RandomAccessInputStream ras = new RandomAccessInputStream(cz); ras.order(isLittleEndian()); return ras; }
private RandomAccessInputStream getCZTag(IFD ifd) throws FormatException, IOException { // get TIF_CZ_LSMINFO structure short[] s = ifd.getIFDShortArray(ZEISS_ID); if (s == null) { LOGGER.warn("Invalid Zeiss LSM file. Tag {} not found.", ZEISS_ID); TiffReader reader = new TiffReader(); reader.setId(getLSMFileFromSeries(getSeries())); core.set(getSeries(), reader.getCoreMetadataList().get(0)); reader.close(); return null; } byte[] cz = new byte[s.length]; for (int i=0; i<s.length; i++) { cz[i] = (byte) s[i]; } RandomAccessInputStream ras = new RandomAccessInputStream(cz); ras.order(isLittleEndian()); return ras; }
@Test(dataProvider = "tiling") public void testSaveBytesTiling(int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { if (percentageOfTilingTests == 0) return; File tmp = File.createTempFile("OMETiffWriterTest_Tiling", ".ome.tiff"); tmp.deleteOnExit(); Plane originalPlane = WriterUtilities.writeImage(tmp, tileSize, littleEndian, interleaved, rgbChannels, seriesCount, sizeT, compression, pixelType, bigTiff); TiffReader reader = new TiffReader(); reader.setId(tmp.getAbsolutePath()); int expectedTileSize = tileSize; if (tileSize < TILE_GRANULARITY) { expectedTileSize = TILE_GRANULARITY; } else { expectedTileSize = Math.round((float)tileSize/TILE_GRANULARITY) * TILE_GRANULARITY; } IFD tileIFd = reader.getIFDs().get(0); assertEquals(tileIFd.getIFDIntValue(IFD.TILE_LENGTH), expectedTileSize); assertEquals(tileIFd.getIFDIntValue(IFD.TILE_WIDTH), expectedTileSize); WriterUtilities.checkImage(reader, originalPlane, interleaved, rgbChannels, seriesCount, sizeT, compression); tmp.delete(); reader.close(); }
@Test(dataProvider = "tiling") public void testSaveBytesTiling(int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { if (percentageOfTilingTests == 0) return; File tmp = File.createTempFile("tiffWriterTest_Tiling", ".tiff"); tmp.deleteOnExit(); Plane originalPlane = WriterUtilities.writeImage(tmp, tileSize, littleEndian, interleaved, rgbChannels, seriesCount, sizeT, compression, pixelType, bigTiff); TiffReader reader = new TiffReader(); reader.setId(tmp.getAbsolutePath()); int expectedTileSize = tileSize; if (tileSize < TILE_GRANULARITY) { expectedTileSize = TILE_GRANULARITY; } else { expectedTileSize = Math.round((float)tileSize/TILE_GRANULARITY) * TILE_GRANULARITY; } IFD tileIFd = reader.getIFDs().get(0); assertEquals(tileIFd.getIFDIntValue(IFD.TILE_LENGTH), expectedTileSize); assertEquals(tileIFd.getIFDIntValue(IFD.TILE_WIDTH), expectedTileSize); WriterUtilities.checkImage(reader, originalPlane, interleaved, rgbChannels, seriesCount, sizeT, compression); tmp.delete(); reader.close(); }
@Test public void testImageWidthWrittenCorrectly() throws Exception { ImageWriter writer = new ImageWriter(); writer.setMetadataRetrieve(ms); writer.setId(target.getAbsolutePath()); writer.saveBytes(0, buf, 0, 0, buf.length, 1); writer.close(); TiffReader reader = new TiffReader(); reader.setId(target.getAbsolutePath()); assertEquals(SIZE_X, reader.getSizeX()); assertEquals(SIZE_Y, reader.getSizeY()); } }
@Test(dataProvider = "nonTiling") public void testSaveBytesInMemory(int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { if (percentageOfSaveBytesTests == 0) return; ByteArrayHandle handle = new ByteArrayHandle(); String id = Math.random() + "-" + System.currentTimeMillis() + ".tif"; Location.mapFile(id, handle); Plane originalPlane = WriterUtilities.writeImage(id, tileSize, littleEndian, interleaved, rgbChannels, seriesCount, sizeT, compression, pixelType, bigTiff); ByteBuffer bytes = handle.getByteBuffer(); byte[] file = new byte[(int) handle.length()]; bytes.position(0); bytes.get(file); handle = new ByteArrayHandle(file); Location.mapFile(id, handle); TiffReader reader = new TiffReader(); reader.setId(id); WriterUtilities.checkImage(reader, originalPlane, interleaved, rgbChannels, seriesCount, sizeT, compression); reader.close(); Location.mapFile(id, null); }
@Test public void testImageWidthWrittenCorrectly() throws Exception { OMETiffWriter writer = new OMETiffWriter(); writer.setBigTiff(true); writer.setMetadataRetrieve(ms); writer.setId(target.getAbsolutePath()); writer.saveBytes(0, buf, 0, 0, buf.length, 1); writer.close(); TiffReader reader = new TiffReader(); reader.setId(target.getAbsolutePath()); assertEquals(SIZE_X, reader.getSizeX()); assertEquals(SIZE_Y, reader.getSizeY()); } }
tiff.setId(getPath(file)); if (bpp <= 0) bpp = tiff.getBitsPerPixel();
tiff.setId(getPath(file)); if (bpp <= 0) bpp = tiff.getBitsPerPixel();
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (singleTiffMode) return tiff.openBytes(no, buf, x, y, w, h); // convert 1D index to (sequence, index, channel) coordinates. final int[] zct = getZCTCoords(no); final int z = zct[0], c = zct[1], t = zct[2]; final Sequence sequence = sequence(t, getSeries()); final int index = frameIndex(sequence, z, t, getSeries()); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index); return blank(buf); } final int channel = channels[c]; final PFile file = frame.getFile(channel); if (file == null) { warnFile(sequence, index, channel); return blank(buf); } tiff.setId(getPath(file)); return tiff.openBytes(0, buf, x, y, w, h); }
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (singleTiffMode) return tiff.openBytes(no, buf, x, y, w, h); // convert 1D index to (sequence, index, channel) coordinates. final int[] zct = getZCTCoords(no); final int z = zct[0], c = zct[1], t = zct[2]; final Sequence sequence = sequence(t, getSeries()); final int index = frameIndex(sequence, z, t, getSeries()); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index); return blank(buf); } final int channel = channels[c]; final PFile file = frame.getFile(channel); if (file == null) { warnFile(sequence, index, channel); return blank(buf); } tiff.setId(getPath(file)); return tiff.openBytes(0, buf, x, y, w, h); }
outputReader.setId(output);
tiff.setId(id); return;
tiff.setId(id); return;