/** Converts the given reader into a ChannelFiller, wrapping if needed. */ public static ChannelFiller makeChannelFiller(IFormatReader r) { if (r instanceof ChannelFiller) return (ChannelFiller) r; return new ChannelFiller(r); }
throws FormatException, IOException if (!isFilled()) return reader.openBytes(no, buf, x, y, w, h); if (getPixelType() == FormatTools.UINT8) { byte[][] b = ImageTools.indexedToRGB(reader.get8BitLookupTable(), pix); if (isInterleaved()) { int pt = 0; for (int i=0; i<b[0].length; i++) { pix, isLittleEndian()); if (isInterleaved()) { int pt = 0; for (int i=0; i<s[0].length; i++) { for (int j=0; j<s.length; j++) { buf[pt++] = (byte) (isLittleEndian() ? (s[j][i] & 0xff) : (s[j][i] >> 8)); buf[pt++] = (byte) (isLittleEndian() ? (s[j][i] >> 8) : (s[j][i] & 0xff)); for (int i=0; i<s.length; i++) { for (int j=0; j<s[i].length; j++) { buf[pt++] = (byte) (isLittleEndian() ? (s[i][j] & 0xff) : (s[i][j] >> 8)); buf[pt++] = (byte) (isLittleEndian() ? (s[i][j] >> 8) : (s[i][j] & 0xff));
@Override public void setId(String id) throws FormatException, IOException { super.setId(id); lutLength = getLookupTableComponentCount(); MetadataStore store = getMetadataStore(); MetadataTools.populatePixelsOnly(store, this); }
@Override public boolean isRGB() { if (!isFilled()) return reader.isRGB(); return getRGBChannelCount() > 1; }
@Override public byte[] openBytes(int no, int x, int y, int w, int h) throws FormatException, IOException { byte[] buf = DataTools.allocate(w, h, getRGBChannelCount(), FormatTools.getBytesPerPixel(getPixelType())); return openBytes(no, buf, x, y, w, h); }
r = channelFiller = new ChannelFiller(r); if (channelFiller.isFilled()) { BF.warn(options.isQuiet(), getIdName() + ": index values will be lost");
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); };
@Override public boolean isIndexed() { if (!isFilled()) return reader.isIndexed(); return false; }
r = channelFiller = new ChannelFiller(r); if (channelFiller.isFilled()) { BF.warn(options.isQuiet(), getIdName() + ": index values will be lost");
@Override public boolean isIndexed() { if (!isFilled()) return reader.isIndexed(); return false; }
@Override public byte[] openBytes(int no, int x, int y, int w, int h) throws FormatException, IOException { byte[] buf = DataTools.allocate(w, h, getRGBChannelCount(), FormatTools.getBytesPerPixel(getPixelType())); return openBytes(no, buf, x, y, w, h); }
@Override public boolean isRGB() { if (!isFilled()) return reader.isRGB(); return getRGBChannelCount() > 1; }
/** Converts the given reader into a ChannelFiller, wrapping if needed. */ public static ChannelFiller makeChannelFiller(IFormatReader r) { if (r instanceof ChannelFiller) return (ChannelFiller) r; return new ChannelFiller(r); }
throws FormatException, IOException if (!isFilled()) return reader.openBytes(no, buf, x, y, w, h); if (getPixelType() == FormatTools.UINT8) { byte[][] b = ImageTools.indexedToRGB(reader.get8BitLookupTable(), pix); if (isInterleaved()) { int pt = 0; for (int i=0; i<b[0].length; i++) { pix, isLittleEndian()); if (isInterleaved()) { int pt = 0; for (int i=0; i<s[0].length; i++) { for (int j=0; j<s.length; j++) { buf[pt++] = (byte) (isLittleEndian() ? (s[j][i] & 0xff) : (s[j][i] >> 8)); buf[pt++] = (byte) (isLittleEndian() ? (s[j][i] >> 8) : (s[j][i] & 0xff)); for (int i=0; i<s.length; i++) { for (int j=0; j<s[i].length; j++) { buf[pt++] = (byte) (isLittleEndian() ? (s[i][j] & 0xff) : (s[i][j] >> 8)); buf[pt++] = (byte) (isLittleEndian() ? (s[i][j] >> 8) : (s[i][j] & 0xff));
@Override public byte[][] get8BitLookupTable() throws FormatException, IOException { if (!isFilled()) return reader.get8BitLookupTable(); return null; }
@Override public void setId(String id) throws FormatException, IOException { super.setId(id); lutLength = getLookupTableComponentCount(); MetadataStore store = getMetadataStore(); MetadataTools.populatePixelsOnly(store, this); }
@Test public void setId() throws Exception { reader = new ImageReader(); reader = new ChannelFiller(reader); reader = new ChannelSeparator(reader); reader = new MinMaxCalculator(reader); if (memMap && reader.isSingleFile(id)) { TestTools.mapFile(id); } StopWatch stopWatch = new Slf4JStopWatch(); reader.setId(id); stopWatch.stop(String.format("%s.setId.%s", ((ReaderWrapper) reader).unwrap().getClass().getName(), filename)); seriesCount = reader.getSeriesCount(); }
@Override public byte[][] get8BitLookupTable() throws FormatException, IOException { if (!isFilled()) return reader.get8BitLookupTable(); return null; }
@Test public void testSetId() throws Exception { reader = new MinMaxCalculator(new ChannelSeparator( new ChannelFiller(new ImageReader()))); metadata = new OMEXMLMetadataImpl(); reader.setMetadataStore(metadata); reader.setId(temporaryFile.getAbsolutePath()); }
@Override public short[][] get16BitLookupTable() throws FormatException, IOException { if (!isFilled()) return reader.get16BitLookupTable(); return null; }