/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /* * Simple C# example * * Usage: * $ mono bin/FileStreaming.exe gdcmData/CT_16b_signed-UsedBits13.dcm output.dcm * * The class will take care of group handling and will use the first available group: * (0009,0012) ?? (LO) [MYTEST] # 6,1 Private Creator */ using System; using gdcm; public class FileStreaming { public static int Main(string[] args) { string filename = args[0]; string outfilename = args[1]; gdcm.PrivateTag pt = new gdcm.PrivateTag( new gdcm.Tag(0x9,0x10), "MYTEST" ); gdcm.FileStreamer fs = new gdcm.FileStreamer(); fs.SetTemplateFileName( filename ); fs.SetOutputFileName( outfilename ); byte[] buffer = new byte[ 8192 ]; uint len = (uint)buffer.Length; // In this example, we want that each newly created Private Attribute // contains at most 1000 bytes of incoming dataset. // We are also calling the function twice to check that appending mode is // working from one call to the other. The last element will have a length // of (2 * 8192) % 1000 = 384 if( !fs.StartGroupDataElement( pt, 1000, 1 ) || !fs.AppendToGroupDataElement( pt, buffer, len ) || !fs.AppendToGroupDataElement( pt, buffer, len ) || !fs.StopGroupDataElement( pt ) ) { System.Console.WriteLine( "Could not change private group" ); return 1; } return 0; } }