/** Returns the index after the segment ends */ public long getSegmentEnd() { if( length==-1 ) return -1; return offset() + longLength(); }
if (fragment instanceof BulkData) { BulkData bulk = (BulkData) fragment; segPositions[k] = bulk.offset(); segLength[k] = bulk.length(); } else {
BulkData updateBulkData(int endBulk) throws IOException { BulkData last = null; for(int i=1; i<=endBulk; i++) { BulkData bulk = null; long bulkOffset = -1; int bulkLength = -1; synchronized(fragments) { if( i < fragments.size() ) { bulk = (BulkData) fragments.get(i); bulkOffset = bulk.offset(); bulkLength = bulk.length(); } } if( bulkOffset==-1 ) { long testOffset = last.offset() + (0xFFFFFFFFl & last.length()); bulk = readBulkAt(testOffset, i); } else if( bulkLength==-1 ) { bulk = readBulkAt(bulkOffset-8, i); } if( bulk==null ) { return null; } last = bulk; } return last; }
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()); }
int index = frameIndex < nbFragments - 1 ? frameIndex + 1 : nbFragments - 1; BulkData bulkData = (BulkData) pixelDataFragments.get(index); offsets[0] = bulkData.offset(); length[0] = bulkData.length(); } else { for (int i = 0; i < length.length; i++) { BulkData bulkData = (BulkData) pixelDataFragments.get(i + frameIndex + 1); offsets[i] = bulkData.offset(); length[i] = bulkData.length(); BulkData bulkData = (BulkData) pixelDataFragments.get(i); ImageInputStream stream = new org.dcm4che3.imageio.stream.SegmentedInputImageStream( srcStream, bulkData.offset(), bulkData.length(), frames <= 1); if (jpeg2000 ? decodeJpeg2000(stream) : decodeJpeg(stream)) { fragmentsPositions.add(i); for (int i = 0; i < offsets.length; i++) { BulkData bulkData = (BulkData) pixelDataFragments.get(start + i); offsets[i] = bulkData.offset(); length[i] = bulkData.length();
try (FileInputStream in = new FileInputStream(media.getFile())) { array = new ByteArrayOutputStream(bulkData.length()); StreamUtils.skipFully(in, bulkData.offset()); StreamUtils.copy(in, array, bulkData.length()); } catch (Exception e) {
lastFrag.setLength(position-8-lastFrag.offset());
offsets[0] = pixeldata.offset() + frameIndex * frameLength; length[0] = frameLength; } else { int index = frameIndex < nbFragments - 1 ? frameIndex + 1 : nbFragments - 1; BulkData bulkData = (BulkData) pixeldataFragments.get(index); offsets[0] = bulkData.offset(); length[0] = bulkData.length(); } else { for (int i = 0; i < length.length; i++) { BulkData bulkData = (BulkData) pixeldataFragments.get(i + frameIndex + 1); offsets[i] = bulkData.offset(); length[i] = bulkData.length(); BulkData bulkData = (BulkData) pixeldataFragments.get(i); ImageInputStream stream = new org.dcm4che3.imageio.stream.SegmentedInputImageStream( srcStream, bulkData.offset(), bulkData.length(), false); if (jpeg2000 ? decodeJpeg2000(stream) : decodeJpeg(stream)) { fragmentsPositions.add(i); for (int i = 0; i < offsets.length; i++) { BulkData bulkData = (BulkData) pixeldataFragments.get(start + i); offsets[i] = bulkData.offset(); length[i] = bulkData.length();
in = new FileInputStream(media.getFile()); out = new FileOutputStream(file); StreamUtils.skipFully(in, bulkData.offset()); StreamUtils.copy(in, out, bulkData.length()); media.setDocument(file);
in = new FileInputStream(media.getFile()); out = new FileOutputStream(videoFile); StreamUtils.skipFully(in, bulkData.offset()); StreamUtils.copy(in, out, bulkData.length()); media.setVideoFile(videoFile);
public BufferedImage readFrame(int frameIndex) throws IOException { if (iis == null) iis = new FileImageInputStream(file); if (decompressor != null) return decompressFrame(iis, frameIndex); iis.setByteOrder(pixeldata.bigEndian() ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN); iis.seek(pixeldata.offset() + frameLength * frameIndex); DataBuffer db = bi.getRaster().getDataBuffer(); switch (db.getDataType()) { case DataBuffer.TYPE_BYTE: byte[][] data = ((DataBufferByte) db).getBankData(); for (byte[] bs : data) iis.readFully(bs); if (pixeldata.bigEndian() && pixeldataVR.vr == VR.OW) ByteUtils.swapShorts(data); break; case DataBuffer.TYPE_USHORT: readFully(((DataBufferUShort) db).getData()); break; case DataBuffer.TYPE_SHORT: readFully(((DataBufferShort) db).getData()); break; default: throw new UnsupportedOperationException( "Unsupported Datatype: " + db.getDataType()); } return bi; }
? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN); iis.seek(pixelData.offset() + frameIndex * frameLength);
offset = pixelData.offset()+pixelData.longLength(); } else { SegmentedInputImageStream siis = (SegmentedInputImageStream) iisOfFrame(-1);