/*========================================================================= 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. =========================================================================*/ #include "vtkGDCMImageReader.h" #include "vtkGDCMImageWriter.h" #include "vtkImageData.h" #include "vtkImageMagnify.h" #include "vtkImageCast.h" #include "gdcmTesting.h" #include "gdcmSystem.h" // This is a simple test to magnify an image that is known to give excellent // compression ratio. This will be our test for those large image int main(int, char *[]) { const char *directory = gdcm::Testing::GetDataRoot(); if(!directory) return 1; std::string file = std::string(directory) + "/test.acr"; std::cout << file << std::endl; if( !gdcm::System::FileExists( file.c_str() ) ) return 1; vtkGDCMImageReader *reader = vtkGDCMImageReader::New(); reader->SetFileName( file.c_str() ); reader->Update(); //reader->GetOutput()->Print( std::cout ); vtkImageCast *cast = vtkImageCast::New(); #if (VTK_MAJOR_VERSION >= 6) cast->SetInputConnection( reader->GetOutputPort() ); #else cast->SetInput( reader->GetOutput() ); #endif cast->SetOutputScalarTypeToUnsignedShort(); vtkImageMagnify *magnify = vtkImageMagnify::New(); #if (VTK_MAJOR_VERSION >= 6) magnify->SetInputConnection( cast->GetOutputPort() ); #else magnify->SetInput( cast->GetOutput() ); #endif magnify->SetInterpolate( 1 ); magnify->SetInterpolate( 0 ); int factor = 100; magnify->SetMagnificationFactors (factor, factor, 1); vtkGDCMImageWriter *writer = vtkGDCMImageWriter::New(); writer->SetFileName( "/tmp/bla.dcm" ); #if (VTK_MAJOR_VERSION >= 6) writer->SetInputConnection( magnify->GetOutputPort() ); #else writer->SetInput( magnify->GetOutput() ); #endif writer->SetImageFormat( reader->GetImageFormat() ); writer->SetMedicalImageProperties( reader->GetMedicalImageProperties() ); writer->SetDirectionCosines( reader->GetDirectionCosines() ); writer->SetShift( reader->GetShift() ); writer->SetScale( reader->GetScale() ); writer->Write(); // TODO: //vtkImageAppendComponents.h reader->Delete(); magnify->Delete(); writer->Delete(); return 0; }