1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
18 #ifndef vvImageWriter_TXX
19 #define vvImageWriter_TXX
20 #include <itkImageFileWriter.h>
23 //====================================================================
24 template<unsigned int VImageDimension>
25 void vvImageWriter::UpdateWithDim(std::string OutputPixelType)
27 if (OutputPixelType == "short")
29 UpdateWithDimAndOutputPixelType<short,VImageDimension>();
31 else if (OutputPixelType == "unsigned short")
33 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
35 else if (OutputPixelType == "unsigned_short")
37 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
39 else if (OutputPixelType == "char")
41 UpdateWithDimAndOutputPixelType<char,VImageDimension>();
43 else if (OutputPixelType == "unsigned_char")
45 UpdateWithDimAndOutputPixelType<unsigned char,VImageDimension>();
47 else if (OutputPixelType == "int")
49 UpdateWithDimAndOutputPixelType<int,VImageDimension>();
51 else if (OutputPixelType == "double")
53 UpdateWithDimAndOutputPixelType<double,VImageDimension>();
55 else if (OutputPixelType == "float")
57 UpdateWithDimAndOutputPixelType<float,VImageDimension>();
61 std::cerr << "Error, output pixel type : \"" << OutputPixelType << "\" unknown !" << std::endl;
64 //====================================================================
66 //====================================================================
67 template<class OutputPixelType, unsigned int VImageDimension>
68 void vvImageWriter::UpdateWithDimAndOutputPixelType()
71 typedef itk::Image< OutputPixelType, VImageDimension > OutputImageType;
72 typedef itk::ImageFileWriter<OutputImageType> WriterType;
73 typename WriterType::Pointer writer = WriterType::New();
74 writer->SetFileName(mOutputFilename);
75 writer->SetInput(vvImageToITK<OutputImageType>(mImage));
77 writer->AddObserver(itk::ProgressEvent(), mObserver);
82 catch ( itk::ExceptionObject & err ) {
83 std::cerr << "Error while reading " << mOutputFilename.c_str()
84 << " " << err << std::endl;
85 std::stringstream error;
87 mLastError = error.str();
91 //====================================================================
93 #endif /* end #define vvImageWriter_TXX */