/** * 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(); } }
public static void checkImage(TiffReader reader, Plane originalPlane, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression) throws FormatException, IOException { for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); assertEquals(reader.getSizeC(), rgbChannels); int imageCount = reader.isRGB() ? seriesCount * sizeT : rgbChannels * sizeT * seriesCount; assertEquals(reader.getImageCount(), imageCount); for (int image=0; image<reader.getImageCount(); image++) { byte[] readPlane = reader.openBytes(image); boolean lossy = compression.equals(COMPRESSION_JPEG) || compression.equals(COMPRESSION_J2K_LOSSY); boolean isJ2K = compression.equals(COMPRESSION_J2K) || compression.equals(COMPRESSION_J2K_LOSSY); boolean interleavedDiffs = interleaved || (isJ2K && !interleaved); if (!(lossy || interleavedDiffs)) { Plane newPlane = new Plane(readPlane, reader.isLittleEndian(), !reader.isInterleaved(), reader.getRGBChannelCount(), FormatTools.getPixelTypeString(reader.getPixelType())); assert(originalPlane.equals(newPlane)); } } } }
throws FormatException, IOException int sourceSeries = source.getSeriesCount() - series; source.setSeries(sourceSeries); int imageCount = source.getImageCount(); setSeries(series); for (int i = 0; i < imageCount; i++) byte[] plane = source.openBytes(i); IFD ifd = new IFD(); ifd.put(IFD.ROWS_PER_STRIP, new long[] { source.getSizeY() });
/** * @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); }
@Override public void run() { final TiffReader reader = new TiffReader(); try { reader.setId(id.getAbsolutePath()); assertEquals(reader.getImageCount(), SIZE_Z * SIZE_C * SIZE_T); assertEquals(reader.getSeriesCount(), 6); short tileCount = (short) TestTools.forEachTile(new TileLoopIteration() { @Override
readers[0][0] = new MinimalTiffReader(); TiffReader r = new TiffReader(); r.setMetadataStore(getMetadataStore()); r.setId(tiffs[0][0]); core = new ArrayList<CoreMetadata>(r.getCoreMetadataList()); metadataStore = r.getMetadataStore(); final Map<String, Object> globalMetadata = r.getGlobalMetadata(); for (final Map.Entry<String, Object> entry : globalMetadata.entrySet()) { addGlobalMeta(entry.getKey(), entry.getValue()); r.close();
TiffReader outputReader = new TiffReader(); outputReader.setId(output); String readDigest; for (int s = 0; s < series; s++) { outputReader.setSeries(s); count = outputReader.getImageCount(); h = outputReader.getSizeY()/m; w = outputReader.getSizeX()/n; for (int k = 0; k < count; k++) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { x = w*j; tile = outputReader.openBytes(k, x, y, w, h); writtenDigest = tileMD5s[s][k][(i * n) + j]; readDigest = TestTools.md5(tile); outputReader.close();
tiffReaders[i] = new TiffReader(); tiffReaders[0].setId(tiffs.get(0)); ms0.sizeC = tiffReaders[0].getSizeC(); ms0.dimensionOrder = isRGB() ? "XYC" : "XY"; ms0.sizeX = tiffReaders[0].getSizeX(); ms0.sizeY = tiffReaders[0].getSizeY(); ms0.rgb = tiffReaders[0].isRGB(); ms0.pixelType = tiffReaders[0].getPixelType(); ms0.littleEndian = tiffReaders[0].isLittleEndian(); ms0.interleaved = tiffReaders[0].isInterleaved(); ms0.falseColor = true; ms0.indexed = tiffReaders[0].isIndexed(); ms.rgb = false; ms.interleaved = false; ms.indexed = tiffReaders[0].isIndexed();
put("ImageJ", nl < 0 ? comment.substring(7) : comment.substring(7, nl)); metadata.remove("Comment"); description = ""; int c = getSizeC(); int images = 1; if (token.startsWith("channels=")) c = parseInt(value); else if (token.startsWith("slices=")) z = parseInt(value); else if (token.startsWith("frames=")) t = parseInt(value); else if (token.startsWith("images=")) { images = parseInt(value); put("Color mode", value); put("Unit", calibrationUnit); Double valueDouble = parseDouble(value); if (valueDouble != null) { timeIncrement = new Time(valueDouble, UNITS.SECOND); put("Frame Interval", timeIncrement); physicalSizeZ = parseDouble(value); put("Spacing", physicalSizeZ); xOrigin = parseInt(value); put("X Origin", xOrigin); yOrigin = parseInt(value);
tiff.setId(getPath(file)); if (bpp <= 0) bpp = tiff.getBitsPerPixel(); final int indexCount = sequence.getIndexCount(); final int sizeX = pixelsPerLine == null ? tiff.getSizeX() : pixelsPerLine; final int sizeY = linesPerFrame == null ? tiff.getSizeY() : linesPerFrame; framesAreTime[s] = sequence.isTimeSeries() && sizeT == 1; cm.sizeC = channels.length; cm.sizeT = framesAreTime[s] ? indexCount : sizeT; cm.pixelType = tiff.getPixelType(); cm.bitsPerPixel = bpp; cm.imageCount = cm.sizeZ * cm.sizeC * cm.sizeT; cm.orderCertain = true; cm.rgb = false; cm.littleEndian = tiff.isLittleEndian(); cm.interleaved = false; cm.indexed = tiff.isIndexed(); cm.falseColor = false; core.add(cm);
TiffReader r = new TiffReader(); r.setId(currentId); try { planes = new OMETiffPlane[r.getImageCount()]; for (int plane=0; plane<planes.length; plane++) { planes[plane] = new OMETiffPlane(); r.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()); } }
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(); }
reader.close(); reader.setMetadataStore(getMetadataStore()); reader.setId(id); core = reader.getCoreMetadataList(); metadata = reader.getGlobalMetadata();
super.initFile(id); tiff = new TiffReader(); tiff.setId(id); return;
@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 void close(boolean fileOnly) throws IOException { super.close(fileOnly); reader.close(fileOnly); if (!fileOnly) { imageFile = null; paramFile = null; } }
ByteSourceFile bsf = new ByteSourceFile(imageFile); FormatCompliance formatCompliance = FormatCompliance.getDefault(); TiffReader tiffReader = new TiffReader(true); TiffContents contents = tiffReader.readDirectories(bsf, true, formatCompliance); TiffDirectory td = contents.directories.get(index); Image bi = td.getTiffImage(tiffReader.getByteOrder(), null); Object width = td.getFieldValue(new TagInfo("", 256, TiffFieldTypeConstants.FIELD_TYPE_SHORT) {/**/}); Object height = td.getFieldValue(new TagInfo("", 257, TiffFieldTypeConstants.FIELD_TYPE_SHORT) {/**/});
/** Constructs a new TIFF reader. */ public TiffDelegateReader() { super("Tagged Image File Format", TiffReader.TIFF_SUFFIXES); nativeReader = new TiffReader(); legacyReader = new TiffJAIReader(); nativeReaderInitialized = false; legacyReaderInitialized = false; suffixNecessary = false; }