short[] pixelBuffer = null;
public boolean writeBuffer ( DicomOutputStream dos ) {
boolean status = false;
try {
// ...transfer everything as byte stream...
//dos.writeHeader(Tag.PixelData, VR.OB, pixelBuffer.length * 2);
//dos.writeHeader(Tag.PixelData, VR.OW, pixelBuffer.length * 2);
//dos.writeHeader(Tag.PixelData, VR.OW, pixelBuffer.length );
//dos.writeHeader(Tag.PixelData, VR.OW, -1);
dos.writeHeader(Tag.PixelData, VR.OB, -1);
//dos.writeHeader(Tag.Item, null, 0);
dos.writeHeader(Tag.Item, null, pixelBuffer.length * 2 );
System.out.println ( "Pixel buffer length : " + pixelBuffer.length * 2);
// ...need to convert the short array to a byte array...
ByteBuffer buffer = ByteBuffer.allocate( pixelBuffer.length * 2 );
buffer.order( ByteOrder.LITTLE_ENDIAN );
buffer.asShortBuffer().put(pixelBuffer);
byte[] bytes = buffer.array();
// ...wont have to pad to even byte length since we are using shorts...
dos.write( bytes, 0, pixelBuffer.length * 2 );
dos.writeHeader(Tag.SequenceDelimitationItem, null, 0);
status = true;
} catch ( IOException e ) {
logger.error ( "Error ! Exception thrown writing pixeldata to DicomOutputStream : " + e.getMessage() );
} catch ( Exception e ) {
logger.error ( "Error ! Unknown Exception thrown writing pixeldata to DicomOutputStream : " + e.getMessage() );
}
return status;
}