/** * @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); if (imageFiles[no] != null && new Location(imageFiles[no]).exists()) { Plane p = planes.get(no); tiffReader.setId(p.filename); tiffReader.openBytes(0, buf, x, y, w, h); tiffReader.close(); } else { LOGGER.warn("File for image #{} ({}) is missing.", no, imageFiles[no]); } return buf; }
@Override public boolean isThisType(RandomAccessInputStream stream) throws IOException { if (tiffReader == null) tiffReader = new MinimalTiffReader(); return tiffReader.isThisType(stream); }
@Override public short[][] get16BitLookupTable() throws FormatException, IOException { if (isTiff && tiff != null) { return tiff.get16BitLookupTable(); } return null; }
@Override public byte[][] get8BitLookupTable() throws FormatException, IOException { FormatTools.assertId(currentId, true, 1); if (readers == null || readers[0][0].getCurrentFile() == null) { return null; } return readers[0][0].get8BitLookupTable(); }
@Override public short[][] get16BitLookupTable() throws FormatException, IOException { FormatTools.assertId(currentId, true, 1); if (readers == null || readers[0][0].getCurrentFile() == null) { return null; } return readers[0][0].get16BitLookupTable(); }
reader = new MinimalTiffReader(); return; reader = new MinimalTiffReader(); ms.dimensionOrder = "XYCZT"; reader.setId(tiffs[i][0]); ms.sizeX = reader.getSizeX(); ms.sizeY = reader.getSizeY(); ms.sizeC *= reader.getSizeC(); ms.rgb = reader.isRGB(); ms.indexed = reader.isIndexed(); ms.littleEndian = reader.isLittleEndian(); ms.pixelType = reader.getPixelType(); tileWidth[i] = reader.getOptimalTileWidth(); tileHeight[i] = reader.getOptimalTileHeight();
MinimalTiffReader r = new MinimalTiffReader(); r.setId(maskFile); byte[] plane = r.openBytes(0); byte[][] planes = null; if (r.isIndexed()) { planes = ImageTools.indexedToRGB(r.get8BitLookupTable(), plane); int bpp = FormatTools.getBytesPerPixel(r.getPixelType()); planes = new byte[r.getRGBChannelCount()][]; for (int c=0; c<planes.length; c++) { planes[c] = ImageTools.splitChannels(plane, c, r.getRGBChannelCount(), bpp, false, r.isInterleaved()); r.close();
reader = new MinimalTiffReader(); reader = new MinimalTiffReader(); reader.setId(tiffs[0]); int sizeX = reader.getSizeX(); int sizeY = reader.getSizeY(); int pixelType = reader.getPixelType(); tileWidth = reader.getOptimalTileWidth(); tileHeight = reader.getOptimalTileHeight(); boolean rgb = reader.isRGB(); boolean interleaved = reader.isInterleaved(); boolean indexed = reader.isIndexed(); boolean littleEndian = reader.isLittleEndian(); reader.close();
reader = new MinimalTiffReader(); reader.setId(tiffs[0][0]); int sizeX = reader.getSizeX(); int sizeY = reader.getSizeY(); int pixelType = reader.getPixelType(); boolean rgb = reader.isRGB(); boolean interleaved = reader.isInterleaved(); boolean indexed = reader.isIndexed(); boolean littleEndian = reader.isLittleEndian();
tiff = new MinimalTiffReader(); tiff.setId(getFile(0)); ms0.pixelType = tiff.getPixelType(); ms0.rgb = isTiff ? tiff.isRGB() : false; ms0.interleaved = false; ms0.littleEndian = isTiff ? tiff.isLittleEndian() : true; ms0.metadataComplete = true; ms0.indexed = isTiff ? tiff.isIndexed() : false; ms0.falseColor = false;
/** * @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); Arrays.fill(buf, (byte) 0); if (getSeries() < planes.length && no < planes[getSeries()].length) { Plane p = planes[getSeries()][no]; if (p != null && p.filename != null && new Location(p.filename).exists()) { if (reader == null) { reader = new MinimalTiffReader(); } reader.setId(p.filename); reader.openBytes(0, buf, x, y, w, h); reader.close(); } } return buf; }
if (r.getCurrentFile() == null) { r.setId(info[series][no].id); IFDList ifdList = r.getIFDs(); if (i >= ifdList.size()) { LOGGER.warn("Error untangling IFDs; the OME-TIFF file may be malformed (IFD #{} missing).", i); if (r.getImageCount() == 1 && w + x == getSizeX() && h + y == getSizeY()) { r.close();
IFD ifd; if (seriesToIFD) { ifd = ifds.get(getSeries()); } else { ifd = ifds.get(no); || firstIFD.getCompression() == TiffCompression.JPEG_2000_LOSSY) && resolutionLevels != null) { if (getCoreIndex() > 0) { ifd = subResolutionIFDs.get(no).get(getCoreIndex() - 1); setResolutionLevel(ifd); initTiffParser(); boolean float16 = getPixelType() == FormatTools.FLOAT && firstIFD.getBitsPerSample()[0] == 16; boolean float24 = getPixelType() == FormatTools.FLOAT && firstIFD.getBitsPerSample()[0] == 24; int nPixels = w * h * getRGBChannelCount(); int nBytes = float16 ? 2 : 3; int mantissaBits = float16 ? 10 : 16; for (int i=0; i<nPixels; i++) { int v = DataTools.bytesToInt(buf, i * nBytes, nBytes, isLittleEndian()); int sign = v >> bits; int exponent =
super.initFile(id); in = new RandomAccessInputStream(id, 16); initTiffParser(); Boolean littleEndian = tiffParser.checkHeader(); if (littleEndian == null) { setSeries(i); IFD firstIFD = ifds.get(i); core.get(i, 0).sizeY = (int) firstIFD.getImageLength(); core.get(i, 0).sizeZ = 1; core.get(i, 0).sizeC = isRGB() ? samples : 1; core.get(i, 0).sizeT = core.size() == 1 ? ifds.size() : 1; core.get(i, 0).metadataComplete = true; core.get(i, 0).indexed = photo == PhotoInterp.RGB_PALETTE && (get8BitLookupTable() != null || get16BitLookupTable() != null); if (isIndexed()) { core.get(i, 0).sizeC = 1; core.get(i, 0).rgb = false; if (getSizeC() == 1 && !isIndexed()) core.get(i, 0).rgb = false; core.get(i, 0).dimensionOrder = "XYCZT"; core.get(i, 0).bitsPerPixel = firstIFD.getBitsPerSample()[0]; core.get(i, 0).imageCount = core.size() == 1 ? ifds.size() : 1; setSeries(0); IFDList ifds = subResolutionIFDs.get(0);
@Override public void close() throws IOException { log.debug("close(" + currentId + ")"); super.close(); }
@Override public byte[] openThumbBytes(int no) throws FormatException, IOException { FormatTools.assertId(currentId, true, 1); if (thumbnailIFDs == null || thumbnailIFDs.size() <= no) { return super.openThumbBytes(no); } if (tiffParser == null) { initTiffParser(); } tiffParser.fillInIFD(thumbnailIFDs.get(no)); int[] bps = null; try { bps = thumbnailIFDs.get(no).getBitsPerSample(); } catch (FormatException e) { } if (bps == null) { return super.openThumbBytes(no); } int b = bps[0]; while ((b % 8) != 0) b++; b /= 8; if (b != FormatTools.getBytesPerPixel(getPixelType()) || bps.length != getRGBChannelCount()) { return super.openThumbBytes(no); } byte[] buf = new byte[getThumbSizeX() * getThumbSizeY() * getRGBChannelCount() * FormatTools.getBytesPerPixel(getPixelType())]; return tiffParser.getSamples(thumbnailIFDs.get(no), buf); }
int i = info[s][0].ifd; MinimalTiffReader r = (MinimalTiffReader) info[s][0].reader; if (r.getCurrentFile() == null) { r.setId(info[s][0].id); IFDList ifdList = r.getIFDs(); if (i >= ifdList.size()) { LOGGER.warn("Error untangling IFDs; the OME-TIFF file may be malformed (IFD #{} missing).", i);
/** * @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); reader.setId(tiffs[getSeries()][no]); return reader.openBytes(0, buf, x, y, w, h); }
super.initStandardMetadata(); delegate = new MinimalTiffReader(); delegate.setId(currentId);