X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkResampleImageGenericFilter.txx;h=3448227a370cd0feb79276624fc40c2f4bea9f09;hb=3c2462eafabcf428b4d2775c414a7b5f62511d3f;hp=e1c2d43497c7a68a1cd1ff1e19814525fcd050cb;hpb=51ed8f6ccb58c734bda9edfc31a9f0f80c3cc797;p=clitk.git diff --git a/tools/clitkResampleImageGenericFilter.txx b/tools/clitkResampleImageGenericFilter.txx index e1c2d43..3448227 100644 --- a/tools/clitkResampleImageGenericFilter.txx +++ b/tools/clitkResampleImageGenericFilter.txx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ #ifndef CLITKRESAMPLEIMAGEGENERICFILTER_TXX #define CLITKRESAMPLEIMAGEGENERICFILTER_TXX @@ -51,37 +51,45 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType() typename OutputImageType::SizeType size; if (mArgsInfo.like_given) { - DD("like"); - + itk::ImageIOBase::Pointer header = clitk::readImageHeader(mArgsInfo.like_arg); + if (header) { + for(unsigned int i=0; iGetSpacing(i); + size[i] = header->GetDimensions(i); + } + filter->SetOutputSpacing(spacing); + filter->SetOutputSize(size); + } + else { + std::cerr << "*** Warning : I could not read '" << mArgsInfo.like_arg << "' ***" << std::endl; + exit(0); + } } else { if (mArgsInfo.spacing_given == 1) { filter->SetOutputIsoSpacing(mArgsInfo.spacing_arg[0]); - } else { - if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.size_given != 0)) { - std::cerr << "Error: use spacing or size, not both." << std::endl; + } + else if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.size_given != 0)) { + std::cerr << "Error: use spacing or size, not both." << std::endl; + exit(0); + } + else if (mArgsInfo.spacing_given) { + if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.spacing_given != dim)) { + std::cerr << "Error: spacing should have one or " << dim << " values." << std::endl; exit(0); } - - if (!((mArgsInfo.spacing_given == 0) && (mArgsInfo.size_given == 0))) { - - if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.spacing_given != dim)) { - std::cerr << "Error: spacing should have one or " << dim << " values." << std::endl; - exit(0); - } - if ((mArgsInfo.size_given != 0) && (mArgsInfo.size_given != dim)) { - std::cerr << "Error: size should have " << dim << " values." << std::endl; - exit(0); - } - if (mArgsInfo.spacing_given) - for(unsigned int i=0; iSetOutputSpacing(spacing); - filter->SetOutputSize(size); + for(unsigned int i=0; iSetOutputSpacing(spacing); + } + else if (mArgsInfo.size_given) { + if ((mArgsInfo.size_given != 0) && (mArgsInfo.size_given != dim)) { + std::cerr << "Error: size should have " << dim << " values." << std::endl; + exit(0); } + for(unsigned int i=0; iSetOutputSize(size); } }