/** 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); } }