/** * This method gets the encoded image from the given object as a byte array * of data. */ protected byte[] extractImageEncoding(IIOImage iioimage, ImageWriteParam param) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); MemoryCacheImageOutputStream imageOutput = new MemoryCacheImageOutputStream( baos); writer.setOutput(imageOutput); writer.write(null, iioimage, writeParam); imageOutput.close(); baos.close(); byte[] data = baos.toByteArray(); // Write little endian raw data if( (!encapsulated) && bytes==2 && ! dos.getTransferSyntax().bigEndian() ) { for(int i=0; i<data.length; i+=2) { byte swap = data[i]; data[i] = data[i+1]; data[i+1] = swap; } } return data; }
private void transcodeValue(DicomInputStream in, VR vr) throws IOException { boolean toggleEndian = out.getTransferSyntax().bigEndian() != in.getTransferSyntax().bigEndian(); int remaining = in.valueLength(); while (remaining > 0) { int len = Math.min(remaining, buf.length); in.readFully(buf, 0, len); if (toggleEndian) vr.toggleEndian(buf, 0, len); out.write(buf, 0, len); remaining -= len; } }
private void writeGroupLength(int tag, int length) throws IOException { writeHeader(tag, VR.UL, 4); write(VR.UL.toBytes(length, ts.bigEndian()), 0, 4); }
if (vallen == -1 || vr == VR.SQ ) { DicomElement a = vr == VR.SQ ? attrs.putSequence(tag) : attrs .putFragments(tag, vr, ts.bigEndian()); readItems(a, vallen); } else { DicomElement a = attrs.putBytes(tag, vr, readBytes(vallen), ts .bigEndian()); if (tag == 0x00020000) { fmiEndPos = pos + a.getInt(false);
public int readHeader() throws IOException { tagpos = pos; readFully(header, 0, 8); tag = ts.bigEndian() ? ByteUtils.bytesBE2tag(header, 0) : ByteUtils .bytesLE2tag(header, 0); if (expectFmiEnd && !TagUtils.isFileMetaInfoElement(tag)) { if (tsuid != null) { ts = TransferSyntax.valueOf(tsuid); tag = ts.bigEndian() ? ByteUtils.bytesBE2tag(header, 0) : ByteUtils.bytesLE2tag(header, 0); } else { vallen = ts.bigEndian() ? ByteUtils.bytesBE2ushort(header, 6) : ByteUtils.bytesLE2ushort(header, 6); if (vr == VR.UN_SIEMENS) { vallen = ts.bigEndian() ? ByteUtils.bytesBE2int(header, 4) : ByteUtils .bytesLE2int(header, 4); return tag;
public void writeHeader(int tag, VR vr, int len) throws IOException { if (ts.bigEndian()) { ByteUtils.tag2bytesBE(tag, header, 0); ByteUtils.ushort2bytesBE(vr.code(), header, 4); if (vr.explicitVRHeaderLength() == 8) { if (ts.bigEndian()) { ByteUtils.ushort2bytesBE(len, header, 6); off = 4; if (ts.bigEndian()) { ByteUtils.int2bytesBE(len, header, 4);
private void transcodeItem(DicomInputStream in) throws SAXException, IOException { final DicomElement sq = in.sq(); final int itemLen = in.valueLength(); final VR sqvr = sq.vr(); final int index = sq.countItems(); if (file != null) file = new File(file, Integer.toString(index+1)); final String fpath = fpath(sq.tag(), sqvr, itemLen); startItemElement(in.tagPosition(), itemLen, fpath); in.readValue(in); if (sq.hasFragments() && index < sq.countItems()) { byte[] data = sq.getFragment(index); if (fpath != null) { writeToFile(data); } else { final boolean bigEndian = in.getTransferSyntax().bigEndian(); sqvr.formatXMLValue(data, bigEndian, null, cbuf, ch); } sq.setFragment(index, EMPTY_BYTES); // allow gc to release byte[] } endItemElement(); if (file != null) file = file.getParentFile(); }
a.bigEndian(ts.bigEndian()); if (a.hasItems()) { if (vr == VR.SQ) {
} else { byte[] val = in.readBytes(vallen); final boolean bigEndian = in.getTransferSyntax().bigEndian(); if (fpath != null) { writeToFile(val);
fixHeaderData(ds); streamMetaData.setDicomObject(ds); bigEndian = dis.getTransferSyntax().bigEndian(); tsuid = ds.getString(Tag.TransferSyntaxUID); width = ds.getInt(Tag.Columns);
private void transcodeAttribute(DicomInputStream in) throws IOException { final int tag = in.tag(); final VR vr = in.vr(); final int vallen = in.valueLength(); final DicomObject attrs = in.getDicomObject(); if (vallen == -1 || vr == VR.SQ) { out.writeHeader(tag, vr, -1); TransferSyntax prevTS = out.getTransferSyntax(); if (vr == VR.UN) { out.setTransferSyntax(TransferSyntax.ImplicitVRLittleEndian); } in.readValue(in); attrs.remove(tag); out.writeHeader(Tag.SequenceDelimitationItem, null, 0); out.setTransferSyntax(prevTS); } else if (!TagUtils.isGroupLengthElement(tag)) { out.writeHeader(tag, vr, vallen); if (tag == Tag.SpecificCharacterSet || TagUtils.isPrivateCreatorDataElement(tag)) { byte[] val = in.readBytes(vallen); boolean bigEndian = in.getTransferSyntax().bigEndian(); attrs.putBytes(tag, vr, val, bigEndian); out.write(val); } else { transcodeValue(in, vr); } } }