@Override public BulkData createBulkData(DicomInputStream dis) throws IOException { BulkData bulkData; if (uri != null && !(super.in instanceof InflaterInputStream)) { bulkData = new BulkData(uri, pos, length, bigEndian); skipFully(length); } else { if (blkOut == null) { File blkfile = File.createTempFile(blkFilePrefix, blkFileSuffix, blkDirectory); if (blkFiles == null) blkFiles = new ArrayList<File>(); blkFiles.add(blkfile); blkURI = blkfile.toURI().toString(); blkOut = new FileOutputStream(blkfile); blkOutPos = 0L; } try { StreamUtils.copy(this, blkOut, length); } finally { if (!catBlkFiles) { SafeClose.close(blkOut); blkOut = null; } } bulkData = new BulkData(blkURI, blkOutPos, length, bigEndian); blkOutPos += length; } return bulkData; }
@Override public void readValue(DicomInputStream dis, Fragments frags) throws IOException { int len = dis.length(); if (dis.isExcludeBulkData()) { dis.skipFully(len); return; } if (!hasItems.getLast()) { gen.writeStartArray("DataFragment"); hasItems.removeLast(); hasItems.add(true); } if (len == 0) gen.writeNull(); else { gen.writeStartObject(); if (dis.isIncludeBulkDataURI()) { writeBulkData(dis.createBulkData(dis)); } else { writeInlineBinary(frags.vr(), dis.readValue(), dis.bigEndian(), false); } gen.writeEnd(); } }
DataBuffer buf = wr.getDataBuffer(); if (dis != null) { dis.skipFully((frameIndex - flushedFrames) * frameLength); flushedFrames = frameIndex + 1; } else if (pixeldataBytes != null) {
@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); } }
@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); } }
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); }
@Override public void readValue(DicomInputStream dis, Attributes attrs) throws IOException { checkIsThis(dis); if (excludeBulkData) { skipFully(length); } else if (length == 0) { attrs.setNull(tag, vr); } else if (vr == VR.SQ) { readSequence(length, attrs, tag); } else if (length == -1) { readFragments(attrs, tag, vr); } else if (length == BulkData.MAGIC_LEN && super.in instanceof ObjectInputStream) { attrs.setValue(tag, vr, BulkData.deserializeFrom( (ObjectInputStream) super.in)); } else if (includeBulkDataURI) { attrs.setValue(tag, vr, bulkDataCreator.createBulkData(this)); } else { byte[] b = readValue(); if (!TagUtils.isGroupLength(tag)) { if (bigEndian != attrs.bigEndian()) vr.toggleEndian(b, false); attrs.setBytes(tag, vr, b); } else if (tag == Tag.FileMetaInformationGroupLength) setFileMetaInformationGroupLength(b); } }
return metadata.getAttributes(); dis.skipFully((frames - flushedFrames) * frameLength); flushedFrames = frames+1; return readPostAttr(dis);
dis.readValue(dis, attrs); else dis.skipFully(len); } else try { String privateCreator = attrs.getPrivateCreator(tag);