private void toggleEndian(RandomAccessFile raf, BulkData bulkData) throws IOException { byte[] b = new byte[bulkData.length()]; raf.seek(bulkData.offset()); raf.readFully(b); raf.seek(bulkData.offset()); raf.write(ByteUtils.swapShorts(b, 0, b.length)); }
public Compressor(Attributes dataset, String from) { super(dataset, from); Object pixeldata = dataset.getValue(Tag.PixelData, pixeldataVR); if (pixeldata == null) return; if (pixeldata instanceof BulkData) { this.pixeldata = (BulkData) pixeldata; if (pmi.isSubSambled()) throw new UnsupportedOperationException( "Unsupported Photometric Interpretation: " + pmi); if (this.pixeldata.length() < length) throw new IllegalArgumentException( "Pixel data too short: " + this.pixeldata.length() + " instead " + length + " bytes"); } embeddedOverlays = Overlays.getEmbeddedOverlayGroupOffsets(dataset); }
BulkData bulk = (BulkData) fragment; segPositions[k] = bulk.offset(); segLength[k] = bulk.length(); } else { byte[] byteFrag = (byte[]) fragment;
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 void saveAudioFile(DicomSpecialElement media) { AudioData audioData = getAudioData(media); if (audioData != null) { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setAcceptAllFileFilterUsed(false); FileFormatFilter filter = new FileFormatFilter("au", "AU"); //$NON-NLS-1$ //$NON-NLS-2$ fileChooser.addChoosableFileFilter(filter); fileChooser.addChoosableFileFilter(new FileFormatFilter("wav", "WAVE")); //$NON-NLS-1$ //$NON-NLS-2$ fileChooser.setFileFilter(filter); if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { if (fileChooser.getSelectedFile() != null) { File file = fileChooser.getSelectedFile(); filter = (FileFormatFilter) fileChooser.getFileFilter(); String extension = filter == null ? ".au" : "." + filter.getDefaultExtension(); //$NON-NLS-1$ //$NON-NLS-2$ String filename = file.getName().endsWith(extension) ? file.getPath() : file.getPath() + extension; try (AudioInputStream audioStream = new AudioInputStream(audioData.bulkData.openStream(), audioData.audioFormat, audioData.bulkData.length() / audioData.audioFormat.getFrameSize())) { if (".wav".equals(extension)) { //$NON-NLS-1$ AudioSystem.write(audioStream, AudioFileFormat.Type.WAVE, new File(filename)); } else { AudioSystem.write(audioStream, AudioFileFormat.Type.AU, new File(filename)); } } catch (IOException ex) { LOGGER.error("Cannot save audio file!", ex); //$NON-NLS-1$ } } } } }
private void initPixelDataFromAttributes(Attributes ds) { VR.Holder holder = new VR.Holder(); Object value = ds.getValue(Tag.PixelData, holder); if (value != null) { imageDescriptor = new ImageDescriptor(ds); pixelDataVR = holder.vr; if (value instanceof BulkData) { pixelData = (BulkData) value; pixelDataLength = pixelData.length(); } else if( value instanceof byte[] ) { pixeldataBytes = (byte[]) value; pixelDataLength = pixeldataBytes.length; } else { // value instanceof Fragments pixelDataFragments = (Fragments) value; pixelDataLength = -1; } } }
BulkData bulkData = (BulkData) wdata; 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) { LOGGER.error("Reading Waveform data"); //$NON-NLS-1$
BulkData bulkData = (BulkData) pixelDataFragments.get(index); offsets[0] = bulkData.offset(); length[0] = bulkData.length(); } else { if (frames == 1) { 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); BulkData bulkData = (BulkData) pixelDataFragments.get(start + i); offsets[i] = bulkData.offset(); length[i] = bulkData.length();
BulkData bulkData = (BulkData) pixeldataFragments.get(index); offsets[0] = bulkData.offset(); length[0] = bulkData.length(); } else { if (numberOfFrame == 1) { 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); BulkData bulkData = (BulkData) pixeldataFragments.get(start + i); offsets[i] = bulkData.offset(); length[i] = bulkData.length();
audioData.bulkData.length() / audioData.audioFormat.getFrameSize())) { DataLine.Info info = new DataLine.Info(Clip.class, audioStream.getFormat()); clip = (Clip) AudioSystem.getLine(info);
out = new FileOutputStream(file); StreamUtils.skipFully(in, bulkData.offset()); StreamUtils.copy(in, out, bulkData.length()); media.setDocument(file); this.add(media);
out = new FileOutputStream(videoFile); StreamUtils.skipFully(in, bulkData.offset()); StreamUtils.copy(in, out, bulkData.length()); media.setVideoFile(videoFile); this.add(media);