public void writeFileMetaInformation(Attributes fmi) throws IOException { if (!explicitVR || bigEndian) throw new IllegalStateException("explicitVR=" + explicitVR + ", bigEndian=" + bigEndian); String tsuid = fmi.getString(Tag.TransferSyntaxUID, null); write(preamble); write(DICM); fmi.writeGroupTo(this, Tag.FileMetaInformationGroupLength); switchTransferSyntax(tsuid); }
itemLen -= offset - 3; dos.writeHeader(Tag.Item, null, (itemLen + 1) & ~1); dos.write((byte) -1); dos.write((byte) JPEG.SOI); dos.write((byte) -1); dos.write(buffer, offset, headerLength - offset); } else { dos.writeHeader(Tag.Item, null, (itemLen + 1) & ~1); dos.write(buffer, 0, headerLength); dos.write(0); dos.writeHeader(Tag.SequenceDelimitationItem, null, 0);
private void decompressPixelData() throws IOException { int length = imageDescriptor.getLength(); int padding = length & 1; adjustDataset(); writeDataset(); dos.writeHeader(Tag.PixelData, VR.OW, length + padding); for (int i = 0; i < imageDescriptor.getFrames(); i++) { decompressFrame(i); writeFrame(); } if (padding != 0) dos.write(0); }
itemLen -= offset - 3; dos.writeHeader(Tag.Item, null, (itemLen + 1) & ~1); dos.write((byte) -1); dos.write((byte) JPEG.SOI); dos.write((byte) -1); dos.write(buffer, offset, headerLength - offset); } else { dos.writeHeader(Tag.Item, null, (itemLen + 1) & ~1); dos.write(buffer, 0, headerLength); dos.write(0); dos.writeHeader(Tag.SequenceDelimitationItem, null, 0);
private void write(SampleModel sm, short[] data) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); int stride = ((ComponentSampleModel) sm).getScanlineStride(); byte[] b = new byte[w * 2]; for (int y = 0; y < h; ++y) { for (int i = 0, j = y * stride; i < b.length;) { short s = data[j++]; b[i++] = (byte) s; b[i++] = (byte) (s >> 8); } dos.write(b); } }
private void write(SampleModel sm, int[] data) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); int stride = ((SinglePixelPackedSampleModel) sm).getScanlineStride(); byte[] b = new byte[w * 3]; for (int y = 0; y < h; ++y) { for (int i = 0, j = y * stride; i < b.length;) { int s = data[j++]; b[i++] = (byte) (s >> 16); b[i++] = (byte) (s >> 8); b[i++] = (byte) s; } dos.write(b); } }
@Override public void writeTo(DicomOutputStream out, VR vr) throws IOException { InputStream in = openStream(); try { if (this.bigEndian != out.isBigEndian()) StreamUtils.copy(in, out, length, vr.numEndianBytes()); else StreamUtils.copy(in, out, length); if ((length & 1) != 0) out.write(vr.paddingByte()); } finally { in.close(); } }
private void write(SampleModel sm, byte[][] bankData) throws IOException { int h = sm.getHeight(); int w = sm.getWidth(); ComponentSampleModel csm = (ComponentSampleModel) sm; int len = w * csm.getPixelStride(); int stride = csm.getScanlineStride(); if (csm.getBandOffsets()[0] != 0) bgr2rgb(bankData[0]); for (byte[] b : bankData) for (int y = 0, off = 0; y < h; ++y, off += stride) dos.write(b, off, len); }