/** Tests single frame lossless writing. */
 public void testSingleFrameLossless() throws IOException {
   if (!hasWriterForTransferSyntax(UID.JPEGLSLossless)) {
     return;
   }
   String name = "ct-write";
   DicomImageReader reader = createImageReader("/misc/ct.dcm");
   BufferedImage bi = readRawBufferedImage(reader, 1);
   DicomStreamMetaData newMeta = copyMeta(reader, UID.JPEGLSLossless);
   ImageInputStream iis = writeImage(newMeta, bi, name);
   DicomImageReader readerNew = createImageReader(iis);
   BufferedImage biNew = readRawBufferedImage(readerNew, 1);
   ImageDiff diff = new ImageDiff(bi, biNew, "target/" + name, 0);
   assertEquals("Max Pixel Difference must be 0", 0, diff.getMaxDiff());
 }
  private void testColorMultiFrame(String name, String objectName, String transferSyntax)
      throws IOException {
    DicomImageReader reader = createImageReader(objectName);

    DicomStreamMetaData copyMeta = copyMeta(reader, transferSyntax);
    int numberOfFrames = copyMeta.getDicomObject().getInt(Tag.NumberOfFrames);
    List<BufferedImage> bufferedImages = new ArrayList<BufferedImage>();

    for (int frame = 1; frame <= numberOfFrames; frame++) {
      BufferedImage biNew = readRawBufferedImage(reader, frame);
      bufferedImages.add(biNew);
    }

    ImageInputStream inputStream = writeImageFrames(copyMeta, bufferedImages, name);
    DicomImageReader readerNew = createImageReader(inputStream);

    int frameNumber = 1;
    for (BufferedImage bufferedImage : bufferedImages) {
      BufferedImage biNew = readRawBufferedImage(readerNew, frameNumber++);
      ImageDiff diff = new ImageDiff(bufferedImage, biNew, "target/" + name, 0);
      assertTrue("Color Frame " + frameNumber + " is different", diff.getMaxDiff() == 0);
    }
  }