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; }
@Override public void readValue(DicomInputStream dis, Fragments frags) throws IOException { int len = dis.length(); if (dis.isExcludeBulkData()) { dis.skipFully(len); } else try { frags.add(ByteUtils.EMPTY_BYTES); // increment size if (len > 0) { startElement("DataFragment", "number", frags.size()); if (dis.isIncludeBulkDataURI()) { writeBulkData(dis.createBulkData(dis)); } else { byte[] b = dis.readValue(); if (dis.bigEndian()) frags.vr().toggleEndian(b, false); writeInlineBinary(b); } endElement("DataFragment"); } } catch (SAXException e) { throw new IOException(e); } }
private void addPixelData(Attributes dest, Attributes src, int frame) { VR.Holder vr = new VR.Holder(); Object pixelData = src.getValue(Tag.PixelData, vr); if (pixelData instanceof byte[]) { dest.setBytes(Tag.PixelData, vr.vr, extractPixelData( (byte[]) pixelData, frame, calcFrameLength(src))); } else if (pixelData instanceof BulkData) { dest.setValue(Tag.PixelData, vr.vr, extractPixelData( (BulkData) pixelData, frame, calcFrameLength(src))); } else { Fragments destFrags = dest.newFragments(Tag.PixelData, vr.vr, 2); destFrags.add(null); destFrags.add(((Fragments) pixelData).get(frame + 1)); } }
@Override public void readValue(DicomInputStream dis, Fragments frags) throws IOException { checkIsThis(dis); if (excludeBulkData) { skipFully(length); } else if (length == 0) { frags.add(ByteUtils.EMPTY_BYTES); } else if (length == BulkData.MAGIC_LEN && super.in instanceof ObjectInputStream) { frags.add(BulkData.deserializeFrom((ObjectInputStream) super.in)); } else if (includeBulkDataURI) { frags.add(bulkDataCreator.createBulkData(this)); } else { byte[] b = readValue(); if (bigEndian != frags.bigEndian()) frags.vr().toggleEndian(b, false); frags.add(b); } }
void toFragments(Fragments fragments) { for (Object value : values) { fragments.add(value); } }
@Override public void readValue(DicomInputStream dis, Fragments frags) throws IOException { StringBuilder line = new StringBuilder(width + 20); appendPrefix(dis, line); appendHeader(dis, line); appendFragment(line, dis, frags.vr()); System.out.println(line); }
/** 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); }
@Override public String toString() { return "" + size() + " Fragments"; }
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); } }
bigendian = pixeldataFragments.bigEndian(); if (bigendian) { LOGGER.error("Big endian fragments?"); //$NON-NLS-1$
private void addPixelData(Attributes dest, Attributes src, int frame) { VR.Holder vr = new VR.Holder(); Object pixelData = src.getValue(Tag.PixelData, vr); if (pixelData instanceof byte[]) { dest.setBytes(Tag.PixelData, vr.vr, extractPixelData( (byte[]) pixelData, frame, calcFrameLength(src))); } else if (pixelData instanceof BulkData) { dest.setValue(Tag.PixelData, vr.vr, extractPixelData( (BulkData) pixelData, frame, calcFrameLength(src))); } else { Fragments destFrags = dest.newFragments(Tag.PixelData, vr.vr, 2); destFrags.add(null); destFrags.add(((Fragments) pixelData).get(frame + 1)); } }
@Override public boolean addAll(int index, Collection<? extends Object> c) { for (Object o : c) add(index++, o); return !c.isEmpty(); }
@Override public void readValue(DicomInputStream dis, Fragments frags) throws IOException { StringBuilder line = new StringBuilder(width + 20); appendPrefix(dis, line); appendHeader(dis, line); appendFragment(line, dis, frags.vr()); System.out.println(line); }
ArrayList<Integer> fragmentsPositions = new ArrayList<>(); int nbFragments = pixelDataFragments.size(); length = new int[offsets.length]; int index = frameIndex < nbFragments - 1 ? frameIndex + 1 : nbFragments - 1; BulkData bulkData = (BulkData) pixelDataFragments.get(index); offsets[0] = bulkData.offset(); length[0] = bulkData.length(); length = new int[offsets.length]; for (int i = 0; i < length.length; i++) { BulkData bulkData = (BulkData) pixelDataFragments.get(i + frameIndex + 1); offsets[i] = bulkData.offset(); length[i] = bulkData.length(); try (ImageInputStream srcStream = ImageIO.createImageInputStream(file)) { for (int i = 1; i < nbFragments; i++) { BulkData bulkData = (BulkData) pixelDataFragments.get(i); ImageInputStream stream = new org.dcm4che3.imageio.stream.SegmentedInputImageStream( srcStream, bulkData.offset(), bulkData.length(), frames <= 1); length = new int[offsets.length]; for (int i = 0; i < offsets.length; i++) { BulkData bulkData = (BulkData) pixelDataFragments.get(start + i); offsets[i] = bulkData.offset(); length[i] = bulkData.length();