public Fragments newFragments(String privateCreator, int tag, VR vr, int initialCapacity) { Fragments frags = new Fragments(vr, bigEndian, initialCapacity); set(privateCreator, tag, vr, frags); return frags; }
/** Just read from the raw data segment - this gets converted to an in-memory fragments object, * which is then handled as a single fragment, with no basic offset table. Basically just an easy * way to get an image input stream on a byte array. */ public SegmentedInputImageStream(byte[] data) throws IOException { stream = null; fragments = new Fragments(VR.OB,false,2); fragments.add(new byte[0]); fragments.add(data); lastSegment = 2; seek(0); }
public SegmentedInputImageStream(ImageInputStream iis, long streamPosition, int length, boolean singleFrame) throws IOException { fragments = new Fragments(VR.OB, false, 16); if( !singleFrame ) { lastSegment = 2; } fragments.add(new byte[0]); fragments.add(new BulkData("pixelData://", streamPosition, length, false)); stream = iis; seek(0); }
private void readFragments(Attributes attrs, int fragsTag, VR vr) throws IOException { Fragments frags = new Fragments(vr, attrs.bigEndian(), 10); String privateCreator = attrs.getPrivateCreator(fragsTag); for (int i = 0; readItemHeader(); ++i) { addItemPointer(fragsTag, privateCreator, i); handler.readValue(this, frags); removeItemPointer(); } if (frags.isEmpty()) attrs.setNull(fragsTag, vr); else { frags.trimToSize(); attrs.setValue(fragsTag, vr, frags); } }
/** Initializes the pixel data reading from an image input stream */ private void initPixelDataIIS(DicomInputStream dis) throws IOException { if( pixelDataLength==0 ) return; if( pixelDataLength>0 ) { pixelData = new BulkData("pixeldata://", dis.getPosition(), dis.length(),dis.bigEndian()); metadata.getAttributes().setValue(Tag.PixelData, pixelDataVR, pixelData); return; } dis.readItemHeader(); byte[] b = new byte[dis.length()]; dis.readFully(b); long start = dis.getPosition(); pixelDataFragments = new Fragments(pixelDataVR, dis.bigEndian(), frames); pixelDataFragments.add(b); generateOffsetLengths(pixelDataFragments, frames,b, start); }