/** Converts the given reader into a ChannelSeparator, wrapping if needed. */ public static ChannelSeparator makeChannelSeparator(IFormatReader r) { if (r instanceof ChannelSeparator) return (ChannelSeparator) r; return new ChannelSeparator(r); }
@Override public byte[] openThumbBytes(int no) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); int source = getOriginalIndex(no); byte[] thumb = reader.openThumbBytes(source); int c = getSizeC() / reader.getEffectiveSizeC(); int channel = no % c; int bpp = FormatTools.getBytesPerPixel(getPixelType()); return ImageTools.splitChannels(thumb, channel, c, bpp, false, reader.isInterleaved()); }
/** * @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[] zct = getZCTCoords(no); int channel = zct[1]; readers[channel].setId(ndpiFiles[channel]); readers[channel].setCoreIndex(getCoreIndex()); int cIndex = (bandUsed[channel] < readers[channel].getSizeC()) ? bandUsed[channel] : 0; int plane = readers[channel].getIndex(zct[0], cIndex, zct[2]); readers[channel].openBytes(plane, buf, x, y, w, h); return buf; }
@Override public boolean isRGB() { FormatTools.assertId(getCurrentFile(), true, 2); return isIndexed() && !isFalseColor() && getSizeC() > 1; }
reader[i] = new ChannelSeparator(new SVSReader()); reader[i].setFlattenedResolutions(hasFlattenedResolutions()); reader[i].setId(pixels.get(i)); ArrayList<String> dyeNames = ((SVSReader) reader[i].getReader()).getDyeNames(); if (dyeNames.size() > 0) { channelNames[i] = dyeNames.get(0); core = reader[0].getCoreMetadataList(); core.get(s).seriesMetadata = new Hashtable<String, Object>(); for (int i=0; i<reader.length; i++) { reader[i].setCoreIndex(s); Hashtable<String, Object> m = reader[i].getSeriesMetadata(); for (String key : m.keySet()) { addSeriesMetaList(key, m.get(key)); SVSReader baseReader = (SVSReader) reader[c].getReader(); emission[c] = baseReader.getEmission(); excitation[c] = baseReader.getExcitation();
int index = Integer.parseInt(key.replaceAll("Image", "")); ndpiFiles[index] = new Location(parent, value).getAbsolutePath(); readers[index] = new ChannelSeparator(new NDPIReader()); readers[index].setFlattenedResolutions(hasFlattenedResolutions()); readers[0].getReader().setMetadataStore(store); readers[0].setId(ndpiFiles[0]); core = new ArrayList<CoreMetadata>(readers[0].getCoreMetadataList()); for (int i=0; i<core.size(); i++) { CoreMetadata ms = core.get(i);
public OMEROWrapper(ImportConfig config, long elapsedTime, File cacheDirectory) { super(createReader(config)); this.config = config; this.iReader = (ImageReader) reader; // Save old value this.reader = null; filler = new ChannelFiller(iReader); separator = new ChannelSeparator(filler); memoizer = new Memoizer(separator, elapsedTime, cacheDirectory) { public Deser getDeser() { KryoDeser k = new KryoDeser(); k.kryo.register(OMEXMLModelComparator.class); return k; } }; reader = memoizer; // Force unreadable characters to be removed from metadata key/value pairs iReader.setMetadataFiltered(true); filler.setMetadataFiltered(true); separator.setMetadataFiltered(true); // Force images with multiple sub-resolutions to not "duplicate" their // series. iReader.setFlattenedResolutions(false); };
throws FormatException, IOException FormatTools.assertId(getCurrentFile(), true, 2); FormatTools.checkPlaneNumber(this, no); int c = getSizeC() / reader.getEffectiveSizeC(); int source = getOriginalIndex(no); int channel = no % c; int series = getCoreIndex(); int bpp = FormatTools.getBytesPerPixel(getPixelType()); false, isInterleaved(), strips == 1 ? w * h * bpp : strip.length); if (strips != 1) { System.arraycopy(strip, 0, buf, i * stripHeight * w * bpp, false, isInterleaved(), w * h * bpp);
lastImageHeight = -1; MetadataStore store = getMetadataStore(); boolean pixelsPopulated = false; if (store instanceof MetadataRetrieve) { MetadataRetrieve retrieve = (MetadataRetrieve) store; for (int s=0; s<getSeriesCount(); s++) { setSeries(s); int rgbChannels = getSizeC() / reader.getEffectiveSizeC(); if (rgbChannels == 1) { continue; setSeries(0);
reader[0].setCoreIndex(getCoreIndex()); return reader[0].openBytes(no, buf, x, y, w, h); int index = getIndex(coords[0], 0, coords[2]); reader[channel].setCoreIndex(getCoreIndex()); int srcBytes = FormatTools.getBytesPerPixel(reader[channel].getPixelType()); int destBytes = FormatTools.getBytesPerPixel(getPixelType()); return reader[channel].openBytes(index, buf, x, y, w, h); byte[] tmp = reader[channel].openBytes(index, x, y, w, h); for (int i=0, dest=0; i<tmp.length; i+=srcBytes, dest+=destBytes) { if (isLittleEndian()) {
@Override public byte[] openBytes(int no, int x, int y, int w, int h) throws FormatException, IOException { byte[] buf = DataTools.allocate(w, h, FormatTools.getBytesPerPixel(getPixelType())); return openBytes(no, buf, x, y, w, h); }
reader[i] = new ChannelSeparator(new SVSReader()); reader[i].setFlattenedResolutions(hasFlattenedResolutions()); reader[i].setId(pixels.get(i)); ArrayList<String> dyeNames = ((SVSReader) reader[i].getReader()).getDyeNames(); if (dyeNames.size() > 0) { channelNames[i] = dyeNames.get(0); core = reader[0].getCoreMetadataList(); core.get(s).seriesMetadata = new Hashtable<String, Object>(); for (int i=0; i<reader.length; i++) { reader[i].setCoreIndex(s); Hashtable<String, Object> m = reader[i].getSeriesMetadata(); for (String key : m.keySet()) { addSeriesMetaList(key, m.get(key)); SVSReader baseReader = (SVSReader) reader[c].getReader(); emission[c] = baseReader.getEmission(); excitation[c] = baseReader.getExcitation();
int index = Integer.parseInt(key.replaceAll("Image", "")); ndpiFiles[index] = new Location(parent, value).getAbsolutePath(); readers[index] = new ChannelSeparator(new NDPIReader()); readers[index].setFlattenedResolutions(hasFlattenedResolutions()); readers[0].getReader().setMetadataStore(store); readers[0].setId(ndpiFiles[0]); core = new ArrayList<CoreMetadata>(readers[0].getCoreMetadataList()); for (int i=0; i<core.size(); i++) { CoreMetadata ms = core.get(i);
throws FormatException, IOException FormatTools.assertId(getCurrentFile(), true, 2); FormatTools.checkPlaneNumber(this, no); int c = getSizeC() / reader.getEffectiveSizeC(); int source = getOriginalIndex(no); int channel = no % c; int series = getCoreIndex(); int bpp = FormatTools.getBytesPerPixel(getPixelType()); false, isInterleaved(), strips == 1 ? w * h * bpp : strip.length); if (strips != 1) { System.arraycopy(strip, 0, buf, i * stripHeight * w * bpp, false, isInterleaved(), w * h * bpp);
@Override public boolean isRGB() { FormatTools.assertId(getCurrentFile(), true, 2); return isIndexed() && !isFalseColor() && getSizeC() > 1; }
lastImageHeight = -1; MetadataStore store = getMetadataStore(); boolean pixelsPopulated = false; if (store instanceof MetadataRetrieve) { MetadataRetrieve retrieve = (MetadataRetrieve) store; for (int s=0; s<getSeriesCount(); s++) { setSeries(s); int rgbChannels = getSizeC() / reader.getEffectiveSizeC(); if (rgbChannels == 1) { continue; setSeries(0);
reader[0].setCoreIndex(getCoreIndex()); return reader[0].openBytes(no, buf, x, y, w, h); int index = getIndex(coords[0], 0, coords[2]); reader[channel].setCoreIndex(getCoreIndex()); int srcBytes = FormatTools.getBytesPerPixel(reader[channel].getPixelType()); int destBytes = FormatTools.getBytesPerPixel(getPixelType()); return reader[channel].openBytes(index, buf, x, y, w, h); byte[] tmp = reader[channel].openBytes(index, x, y, w, h); for (int i=0, dest=0; i<tmp.length; i+=srcBytes, dest+=destBytes) { if (isLittleEndian()) {
@Override public byte[] openBytes(int no, int x, int y, int w, int h) throws FormatException, IOException { byte[] buf = DataTools.allocate(w, h, FormatTools.getBytesPerPixel(getPixelType())); return openBytes(no, buf, x, y, w, h); }