@Override public int getNumImages(boolean allowSearch) throws IOException { readMetadata(); return frames; }
/** * Gets the stream metadata. May not contain post pixel data unless * there are no images or the getStreamMetadata has been called with the post pixel data * node being specified. */ @Override public DicomMetaData getStreamMetadata() throws IOException { readMetadata(); return metadata; }
@Override public int getWidth(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); return width; }
@Override public int getHeight(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); return height; }
@Override public ImageTypeSpecifier getRawImageType(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); if (decompressor == null) return createImageType(bitsStored, dataType, banded); if (rle) return createImageType(bitsStored, dataType, true); openiis(); try { decompressor.setInput(iisOfFrame(0)); return decompressor.getRawImageType(0); } finally { closeiis(); } }
@Override public Iterator<ImageTypeSpecifier> getImageTypes(int frameIndex) throws IOException { readMetadata(); checkIndex(frameIndex); ImageTypeSpecifier imageType; if (pmi.isMonochrome()) imageType = createImageType(8, DataBuffer.TYPE_BYTE, false); else if (decompressor == null) imageType = createImageType(bitsStored, dataType, banded); else if (rle) imageType = createImageType(bitsStored, dataType, true); else { openiis(); try { decompressor.setInput(iisOfFrame(0)); return decompressor.getImageTypes(0); } finally { closeiis(); } } return Collections.singletonList(imageType).iterator(); }
@Override public BufferedImage read(int frameIndex, ImageReadParam param) throws IOException { readMetadata(); checkIndex(frameIndex);
@Override public Raster readRaster(int frameIndex, ImageReadParam param) throws IOException { readMetadata(); checkIndex(frameIndex);