/** Returns an image reader on the given filename */
 public static DicomImageReader createImageReader(ImageInputStream is) {
   assertNotNull(is);
   DicomImageReaderSpi spi = new DicomImageReaderSpi();
   DicomImageReader reader = (DicomImageReader) spi.createReaderInstance(null);
   reader.setInput(is, true);
   return reader;
 }
  public static BufferedImage readRawBufferedImage(DicomImageReader reader, int frameNumber)
      throws IOException {

    int imageIndexFromZero = frameNumber - 1;
    WritableRaster raster = (WritableRaster) reader.readRaster(imageIndexFromZero, null);
    DicomObject ds = ((DicomStreamMetaData) reader.getStreamMetadata()).getDicomObject();
    ColorModel cm = ColorModelFactory.createColorModel(ds);
    return new BufferedImage(cm, raster, false, null);
  }
 private DicomStreamMetaData copyMeta(DicomImageReader reader, String tsuid) throws IOException {
   DicomStreamMetaData oldMeta = (DicomStreamMetaData) reader.getStreamMetadata();
   DicomStreamMetaData ret = new DicomStreamMetaData();
   DicomObject ds = oldMeta.getDicomObject();
   DicomObject newDs = new BasicDicomObject();
   ds.copyTo(newDs);
   newDs.putString(Tag.TransferSyntaxUID, VR.UI, tsuid);
   ret.setDicomObject(newDs);
   return ret;
 }