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") {
28 UpdateWithDimAndOutputPixelType<short,VImageDimension>();
29 } else if (OutputPixelType == "unsigned short") {
30 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
31 } else if (OutputPixelType == "unsigned_short") {
32 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
33 } else if (OutputPixelType == "char") {
34 UpdateWithDimAndOutputPixelType<char,VImageDimension>();
35 } else if (OutputPixelType == "unsigned_char") {
36 UpdateWithDimAndOutputPixelType<unsigned char,VImageDimension>();
37 } else if (OutputPixelType == "int") {
38 UpdateWithDimAndOutputPixelType<int,VImageDimension>();
39 } else if (OutputPixelType == "double") {
40 UpdateWithDimAndOutputPixelType<double,VImageDimension>();
41 } else if (OutputPixelType == "float") {
42 UpdateWithDimAndOutputPixelType<float,VImageDimension>();
44 std::cerr << "Error, output pixel type : \"" << OutputPixelType << "\" unknown !" << std::endl;
47 //====================================================================
49 //====================================================================
50 template<class OutputPixelType, unsigned int VImageDimension>
51 void vvImageWriter::UpdateWithDimAndOutputPixelType()
54 typedef itk::Image< OutputPixelType, VImageDimension > OutputImageType;
55 typedef itk::ImageFileWriter<OutputImageType> WriterType;
56 typename WriterType::Pointer writer = WriterType::New();
57 writer->SetFileName(mOutputFilename);
58 writer->SetInput(vvImageToITK<OutputImageType>(mImage));
60 writer->AddObserver(itk::ProgressEvent(), mObserver);
64 } catch ( itk::ExceptionObject & err ) {
65 std::cerr << "Error while reading " << mOutputFilename.c_str()
66 << " " << err << std::endl;
67 std::stringstream error;
69 mLastError = error.str();
73 //====================================================================
75 #endif /* end #define vvImageWriter_TXX */