private void bulkData(String uuid, String uri) { bulkData = new BulkData(uuid, uri, items.getLast().bigEndian()); }
private void setPixelDataBulkData(VR vr) { if (pixelDataBulkDataURI != null) dataset.setValue(Tag.PixelData, vr, new BulkData(null, pixelDataBulkDataURI, false)); }
public static Value deserializeFrom(ObjectInputStream ois) throws IOException { return new BulkData( StringUtils.maskEmpty(ois.readUTF(), null), StringUtils.maskEmpty(ois.readUTF(), null), ois.readBoolean()); }
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); }
@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; }
private static void supplementBulkdata(Attributes metadata, int tag, StowRS instance) { if (!metadata.containsValue(tag)) { instance.contentLoc = "bulk" + UIDUtils.createUID(); metadata.setValue(tag, VR.OB, new BulkData(null, instance.contentLoc, false)); } }
private BulkData extractPixelData(BulkData src, int frame, int length) { return new BulkData(src.uriWithoutOffsetAndLength(), src.offset() + frame * length, length, src.bigEndian()); }
private BulkData extractPixelData(BulkData src, int frame, int length) { return new BulkData(src.uriWithoutOffsetAndLength(), src.offset() + frame * length, length, src.bigEndian()); }
private static void supplementBulkdata(Attributes metadata, int tag, StowRS instance) { if (!metadata.containsValue(tag)) { instance.contentLoc = "bulk" + UIDUtils.createUID(); metadata.setValue(tag, VR.OB, new BulkData(null, instance.contentLoc, false)); } }
BulkData readBulkAt(long testOffset, int at) throws IOException { byte[] data = new byte[8]; stream.seek(testOffset); int size = stream.read(data); if( size<8 ) return null; int tag =ByteUtils.bytesToTagLE(data, 0); if( tag==Tag.SequenceDelimitationItem ) { // Safe to read un-protected now as we know there are no more items to update. lastSegment = fragments.size(); return null; } if( tag!=Tag.Item ) { throw new IOException("At "+testOffset+" isn't an Item("+Integer.toHexString(Tag.Item)+"), but is "+Integer.toHexString(tag)); } int itemLen = ByteUtils.bytesToIntLE(data, 4); BulkData bulk; synchronized(fragments) { if( at < fragments.size() ) { bulk = (BulkData) fragments.get(at); bulk.setOffset(testOffset+8); bulk.setLength(itemLen); } else { bulk = new BulkData("compressedPixelData://", testOffset+8,itemLen,false); fragments.add(bulk); } } return bulk; }
public File getDicomFile() { Attributes dcm = getDicomObject(); DicomOutputStream out = null; try { File file = imageCV.getFile(); BulkData bdl = new BulkData(file.toURI().toString(), FileRawImage.HEADER_LENGTH, (int) file.length() - FileRawImage.HEADER_LENGTH, false); dcm.setValue(Tag.PixelData, VR.OW, bdl); File tmpFile = new File(DicomMediaIO.DICOM_EXPORT_DIR, dcm.getString(Tag.SOPInstanceUID)); out = new DicomOutputStream(tmpFile); out.writeDataset(dcm.createFileMetaInformation(UID.ImplicitVRLittleEndian), dcm); return tmpFile; } catch (IOException e) { LOGGER.error("Cannot write dicom file", e); //$NON-NLS-1$ } finally { FileUtil.safeClose(out); } return null; }
position = start+offset+8; BulkData frag = new BulkData("compressedPixelData://", position,-1, false); if( lastFrag!=null && position!=-1 ) { lastFrag.setLength(position-8-lastFrag.offset());
private Object readDataFragment() { byte[] bytes = null; String bulkDataURI = null; while (next() == Event.KEY_NAME) { switch (getString()) { case "BulkDataURI": bulkDataURI = valueString(); break; case "InlineBinary": bytes = readInlineBinary(); break; default: throw new JsonParsingException("Unexpected \"" + getString() + "\", expected \"InlineBinary\"" + " or \"BulkDataURI\"", parser.getLocation()); } } expect(Event.END_OBJECT); return bulkDataURI != null && !skipBulkDataURI ? new BulkData(null, bulkDataURI, false) : bytes; }
/** 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); }
else if (el.bulkDataURI != null) { if (!skipBulkDataURI) attrs.setValue(tag, el.vr, new BulkData(null, el.bulkDataURI, false)); } else switch (el.vr) { case AE: