/*========================================================================= 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. =========================================================================*/ using Kitware.VTK; using Kitware.VTK.GDCM; using gdcm; /* * $ export MONO_PATH=/usr/lib/cli/ActiViz.NET/:/usr/lib/cli/Kitware.mummy.Runtime-1.0 * $ mono ./bin/MetaImageMD5Activiz.exe gdcmData/012345.002.050.dcm */ public class MetaImageMD5Activiz { public static int ProcessOneMHDMD5(string filename) { vtkGDCMImageReader reader = vtkGDCMImageReader.New(); reader.FileLowerLeftOn(); reader.DebugOff(); int canread = reader.CanReadFile( filename ); if( canread == 0 ) { string refms = gdcm.Testing.GetMediaStorageFromFile(filename); if( gdcm.MediaStorage.IsImage( gdcm.MediaStorage.GetMSType(refms) ) ) { System.Console.Write( "Problem with file: " + filename + "\n" ); return 1; } // not an image return 0; } reader.SetFileName( filename ); reader.Update(); // System.Console.Write(reader.GetOutput()); vtkMetaImageWriter writer = vtkMetaImageWriter.New(); writer.SetCompression( false ); writer.SetInput( reader.GetOutput() ); string subdir = "MetaImageMD5Activiz"; string tmpdir = gdcm.Testing.GetTempDirectory( subdir ); if( !gdcm.PosixEmulation.FileIsDirectory( tmpdir ) ) { gdcm.PosixEmulation.MakeDirectory( tmpdir ); } string mhdfile = gdcm.Testing.GetTempFilename( filename, subdir ); string rawfile = mhdfile; mhdfile += ".mhd"; rawfile += ".raw"; writer.SetFileName( mhdfile ); writer.Write(); string digestmhd = gdcm.Testing.ComputeFileMD5( mhdfile ); string digestraw = gdcm.Testing.ComputeFileMD5( rawfile ); string mhdref = vtkGDCMTesting.GetMHDMD5FromFile(filename); string rawref = vtkGDCMTesting.GetRAWMD5FromFile(filename); if( mhdref != digestmhd ) { System.Console.Write( "Problem with mhd file: " + filename + "\n" ); System.Console.Write( digestmhd ); System.Console.Write( "\n" ); System.Console.Write( mhdref ); System.Console.Write( "\n" ); return 1; } if( rawref != digestraw ) { System.Console.Write( "Problem with raw file: " + filename + "\n" ); System.Console.Write( digestraw ); System.Console.Write( "\n" ); System.Console.Write( rawref ); System.Console.Write( "\n" ); return 1; } return 0; } public static int Main(string[] args) { if ( args.Length == 1 ) { string filename = args[0]; return ProcessOneMHDMD5( filename ); } // Loop over all gdcmData gdcm.Trace.DebugOff(); gdcm.Trace.WarningOff(); gdcm.Trace.ErrorOff(); uint n = gdcm.Testing.GetNumberOfFileNames(); int ret = 0; for( uint i = 0; i < n; ++i ) { string filename = gdcm.Testing.GetFileName( i ); ret += ProcessOneMHDMD5( filename ); } return ret; } }