public void transcode(Handler handler) throws IOException { this.handler = handler; dis.readAttributes(dataset, -1, -1); if (dos == null) { initDicomOutputStream(); writeDataset(); } else if (postPixelData != null) dos.writeDataset(null, postPixelData); }
private void decompressPixelData() throws IOException { int length = imageDescriptor.getLength(); int padding = length & 1; adjustDataset(); writeDataset(); dos.writeHeader(Tag.PixelData, VR.OW, length + padding); for (int i = 0; i < imageDescriptor.getFrames(); i++) { decompressFrame(i); writeFrame(); } if (padding != 0) dos.write(0); }
private void copyPixelData() throws IOException { int length = dis.length(); writeDataset(); dos.writeHeader(Tag.PixelData, dis.vr(), length); if (length == -1) { dis.readValue(dis, dataset); dos.writeHeader(Tag.SequenceDelimitationItem, null, 0); } else { if (dis.bigEndian() == dos.isBigEndian()) StreamUtils.copy(dis, dos, length, buffer()); else StreamUtils.copy(dis, dos, length, dis.vr().numEndianBytes(), buffer()); } }
private void compressPixelData() throws IOException { int padding = dis.length() - imageDescriptor.getLength(); for (int i = 0; i < imageDescriptor.getFrames(); i++) { if (decompressor == null) readFrame(); else bi = decompressFrame(i); if (i == 0) { extractEmbeddedOverlays(); adjustDataset(); writeDataset(); dos.writeHeader(Tag.PixelData, VR.OB, -1); dos.writeHeader(Tag.Item, null, 0); } nullifyUnusedBits(); compressFrame(i); } dis.skipFully(padding); dos.writeHeader(Tag.SequenceDelimitationItem, null, 0); }