public static int Main(string[] args) { string filename = args[0]; // instanciate the reader: gdcm.ImageReader reader = new gdcm.ImageReader(); reader.SetFileName( filename ); if (!reader.Read()) return 1; Image ir = reader.GetImage(); uint[] dims = {0, 0, 0}; dims[0] = ir.GetDimension(0); dims[1] = ir.GetDimension(1); dims[2] = ir.GetDimension(2); System.Console.WriteLine( "Dim:" + dims[0] ); System.Console.WriteLine( "Dim:" + dims[1] ); System.Console.WriteLine( "Dim:" + dims[2] ); // buffer to get the pixels byte[] buffer = new byte[ ir.GetBufferLength()]; System.Console.WriteLine( "Dim:" + ir.GetBufferLength() ); ir.GetBuffer( buffer ); for (uint z = 0; z < dims[2]; z++) { for (uint y = 0; y < dims[1] / 2; y++) // only half Y { for (uint x = 0; x < dims[0] / 2; x++) // only half X { buffer[ (z * dims[1] + y) * dims[0] + x ] = 0; // works when pixel type == UINT8 } } } DataElement pixeldata = new DataElement( new Tag(0x7fe0,0x0010) ); pixeldata.SetByteValue( buffer, new VL( (uint)buffer.Length ) ); ir.SetDataElement( pixeldata ); ir.SetTransferSyntax( new TransferSyntax( TransferSyntax.TSType.ExplicitVRLittleEndian ) ); ImageChangeTransferSyntax change = new ImageChangeTransferSyntax(); change.SetTransferSyntax( new TransferSyntax( TransferSyntax.TSType.JPEGLSLossless ) ); change.SetInput( ir ); if( !change.Change() ) { System.Console.WriteLine( "Could not change: " + filename ); return 1; } ImageWriter writer = new ImageWriter(); writer.SetFileName( "out.dcm" ); writer.SetFile( reader.GetFile() ); writer.SetImage( change.GetOutput() ); bool ret = writer.Write(); if( !ret ) { return 1; } return 0; }
public static int Main(string[] args) { string filename = args[0]; // instanciate the reader: gdcm.ImageReader reader = new gdcm.ImageReader(); reader.SetFileName(filename); if (!reader.Read()) { return(1); } Image ir = reader.GetImage(); uint[] dims = { 0, 0, 0 }; dims[0] = ir.GetDimension(0); dims[1] = ir.GetDimension(1); dims[2] = ir.GetDimension(2); System.Console.WriteLine("Dim:" + dims[0]); System.Console.WriteLine("Dim:" + dims[1]); System.Console.WriteLine("Dim:" + dims[2]); // buffer to get the pixels byte[] buffer = new byte[ir.GetBufferLength()]; System.Console.WriteLine("Dim:" + ir.GetBufferLength()); ir.GetBuffer(buffer); for (uint z = 0; z < dims[2]; z++) { for (uint y = 0; y < dims[1] / 2; y++) // only half Y { for (uint x = 0; x < dims[0] / 2; x++) // only half X { buffer[(z * dims[1] + y) * dims[0] + x] = 0; // works when pixel type == UINT8 } } } DataElement pixeldata = new DataElement(new Tag(0x7fe0, 0x0010)); pixeldata.SetByteValue(buffer, new VL((uint)buffer.Length)); ir.SetDataElement(pixeldata); ir.SetTransferSyntax(new TransferSyntax(TransferSyntax.TSType.ExplicitVRLittleEndian)); ImageChangeTransferSyntax change = new ImageChangeTransferSyntax(); change.SetTransferSyntax(new TransferSyntax(TransferSyntax.TSType.JPEGLSLossless)); change.SetInput(ir); if (!change.Change()) { System.Console.WriteLine("Could not change: " + filename); return(1); } ImageWriter writer = new ImageWriter(); writer.SetFileName("out.dcm"); writer.SetFile(reader.GetFile()); writer.SetImage(change.GetOutput()); bool ret = writer.Write(); if (!ret) { return(1); } return(0); }